DynamoDB - Control de acceso
DynamoDB utiliza las credenciales que proporciona para autenticar las solicitudes. Estas credenciales son necesarias y deben incluir permisos para acceder a los recursos de AWS. Estos permisos abarcan prácticamente todos los aspectos de DynamoDB hasta las características menores de una operación o funcionalidad.
Tipos de permisos
En esta sección, analizaremos los distintos permisos y acceso a recursos en DynamoDB.
Autenticar usuarios
Al registrarse, proporcionó una contraseña y un correo electrónico, que sirven como credenciales de root. DynamoDB asocia estos datos con su cuenta de AWS y los usa para brindar acceso completo a todos los recursos.
AWS recomienda que utilice sus credenciales raíz solo para la creación de una cuenta de administración. Esto le permite crear cuentas / usuarios de IAM con menos privilegios. Los usuarios de IAM son otras cuentas generadas con el servicio de IAM. Sus permisos / privilegios de acceso incluyen acceso a páginas seguras y ciertos permisos personalizados como la modificación de tablas.
Las claves de acceso brindan otra opción para cuentas y acceso adicionales. Úselos para otorgar acceso y también para evitar la concesión manual de acceso en determinadas situaciones. Los usuarios federados ofrecen otra opción al permitir el acceso a través de un proveedor de identidad.
Administración
Los recursos de AWS siguen siendo propiedad de una cuenta. Las políticas de permisos rigen los permisos otorgados para generar o acceder a los recursos. Los administradores asocian las políticas de permisos con las identidades de IAM, es decir, roles, grupos, usuarios y servicios. También otorgan permisos a los recursos.
Los permisos especifican usuarios, recursos y acciones. Tenga en cuenta que los administradores son simplemente cuentas con privilegios de administrador.
Operación y Recursos
Las tablas siguen siendo los principales recursos de DynamoDB. Los recursos secundarios sirven como recursos adicionales, por ejemplo, corrientes e índices. Estos recursos utilizan nombres únicos, algunos de los cuales se mencionan en la siguiente tabla:
Tipo | ARN (nombre de recurso de Amazon) |
---|---|
Corriente | arn: aws: dynamodb: región: id-cuenta: tabla / nombre-tabla / flujo / etiqueta-flujo |
Índice | arn: aws: dynamodb: región: id-cuenta: tabla / nombre-tabla / índice / nombre-índice |
Mesa | arn: aws: dynamodb: región: id-cuenta: tabla / nombre-tabla |
Propiedad
El propietario de un recurso se define como una cuenta de AWS que generó el recurso, o la cuenta de entidad principal responsable de la autenticación de solicitudes en la creación de recursos. Considere cómo funciona esto dentro del entorno de DynamoDB:
Al usar las credenciales de root para crear una tabla, su cuenta sigue siendo el propietario del recurso.
Al crear un usuario de IAM y otorgarle permiso para crear una tabla, su cuenta sigue siendo el propietario del recurso.
Al crear un usuario de IAM y otorgar al usuario, y a cualquier persona capaz de asumir el rol, permiso para crear una tabla, su cuenta sigue siendo el propietario del recurso.
Administrar el acceso a los recursos
La gestión del acceso requiere principalmente atención a una política de permisos que describe a los usuarios y el acceso a los recursos. Asocia políticas con identidades o recursos de IAM. Sin embargo, DynamoDB solo admite políticas de identidad / IAM.
Las políticas basadas en identidad (IAM) le permiten otorgar privilegios de las siguientes maneras:
- Adjunte permisos a usuarios o grupos.
- Adjunte permisos a roles para permisos entre cuentas.
Otros AWS permiten políticas basadas en recursos. Estas políticas permiten el acceso a cosas como un bucket de S3.
Elementos de política
Las políticas definen acciones, efectos, recursos y principios; y otorgar permiso para realizar estas operaciones.
Note - Las operaciones de la API pueden requerir permisos para múltiples acciones.
Eche un vistazo más de cerca a los siguientes elementos de política:
Resource - Un ARN identifica esto.
Action - Las palabras clave identifican estas operaciones de recursos y si permitir o denegar.
Effect - Especifica el efecto de una solicitud de usuario para una acción, lo que significa permitir o denegar con la denegación como opción predeterminada.
Principal - Esto identifica al usuario adjunto a la política.
Condiciones
Al otorgar permisos, puede especificar condiciones para cuando las políticas se activen, como en una fecha en particular. Exprese condiciones con claves de condición, que incluyen claves de todo el sistema de AWS y claves de DynamoDB. Estas claves se describen en detalle más adelante en el tutorial.
Permisos de la consola
Un usuario requiere ciertos permisos básicos para usar la consola. También requieren permisos para la consola en otros servicios estándar:
- CloudWatch
- Canalización de datos
- Gestión de identidad y acceso
- Servicio de notificaciones
- Lambda
Si la política de IAM resulta demasiado limitada, el usuario no puede utilizar la consola de forma eficaz. Además, no necesita preocuparse por los permisos de usuario para aquellos que solo llaman a la CLI o API.
Políticas de Iam de uso común
AWS cubre operaciones comunes en permisos con políticas administradas de IAM independientes. Proporcionan permisos clave que le permiten evitar investigaciones profundas sobre lo que debe otorgar.
Algunos de ellos son los siguientes:
AmazonDynamoDBReadOnlyAccess - Da acceso de solo lectura a través de la consola.
AmazonDynamoDBFullAccess - Da acceso completo a través de la consola.
AmazonDynamoDBFullAccesswithDataPipeline - Da acceso completo a través de la consola y permite exportar / importar con Data Pipeline.
Por supuesto, también puede crear políticas personalizadas.
Concesión de privilegios: uso del shell
Puede otorgar permisos con el shell de Javascript. El siguiente programa muestra una política de permisos típica:
{
"Version": "2016-05-22",
"Statement": [
{
"Sid": "DescribeQueryScanToolsTable",
"Effect": "Deny",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:Query",
"dynamodb:Scan"
],
"Resource": "arn:aws:dynamodb:us-west-2:account-id:table/Tools"
}
]
}
Puede revisar los tres ejemplos que son los siguientes:
Block the user from executing any table action.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "AllAPIActionsOnTools",
"Effect": "Deny",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:table/Tools"
}
]
}
Block access to a table and its indices.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "AccessAllIndexesOnTools",
"Effect": "Deny",
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:155556789012:table/Tools",
"arn:aws:dynamodb:us-west-2:155556789012:table/Tools/index/*"
]
}
]
}
Block a user from making a reserved capacity offering purchase.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "BlockReservedCapacityPurchases",
"Effect": "Deny",
"Action": "dynamodb:PurchaseReservedCapacityOfferings",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:*"
}
]
}
Concesión de privilegios: uso de la consola GUI
También puede utilizar la consola GUI para crear políticas de IAM. Para empezar, elijaTablesdesde el panel de navegación. En la lista de tablas, elija la tabla de destino y siga estos pasos.
Step 1 - Seleccione el Access control lengüeta.
Step 2- Seleccione el proveedor de identidad, las acciones y los atributos de la política. SeleccioneCreate policy después de ingresar todos los ajustes.
Step 3 - Elija Attach policy instructionsy complete cada paso necesario para asociar la política con el rol de IAM correspondiente.