Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
¿Cómo soluciono el error AccessDeniedException al acceder a una tabla de Amazon DynamoDB?
Quiero acceder a una tabla de Amazon DynamoDB, pero aparece el error AccessDeniedException.
Descripción breve
Es posible que aparezca este error por los siguientes motivos:
- El rol de AWS Identity and Access Management (IAM) que utilizó para acceder a la tabla de DynamoDB no tiene los permisos necesarios.
- El acceso a la tabla de DynamoDB se restringe por organización.
- La política asociada al punto de enlace de Amazon Virtual Private Cloud (Amazon VPC) para DynamoDB restringe la operación.
- Activó la autenticación multifactor (MFA) y no la usó para iniciar sesión y acceder a la tabla.
- Utiliza una clave administrada por el cliente o una clave administrada de AWS para proteger las tablas de DynamoDB.
- No puede acceder a Información de colaboradores de Amazon CloudWatch para DynamoDB.
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente.
Resolución
El rol de IAM no tiene los permisos necesarios
Al crear una tabla de DynamoDB, conceda los permisos necesarios al rol de IAM que utiliza para acceder a la tabla. Puede adjuntar las políticas a usuarios, grupos o roles de IAM para conceder los permisos necesarios. Para obtener más información, consulte Uso de las políticas basadas en identidades con Amazon DynamoDB.
Para solucionar errores en las llamadas a la API de permisos de IAM, utilice un script de AWS CLI:
( echo "Time,Identity ARN,Event ID,Service,Action,Error,Message";> aws cloudtrail lookup-events --start-time "2022-08-04T13:23:00Z" --end-time "2022-08-04T13:27:00Z" --query "Events[*].CloudTrailEvent" --output text \ > | jq -r ". | select(.userIdentity.arn == \"your-ARN\" and .eventType == \"AwsApiCall\" and .errorCode != null > and (.errorCode | ascii_downcase | (contains(\"accessdenied\") or contains(\"unauthorized\")))) > | [.eventTime, .userIdentity.arn, .eventID, .eventSource, .eventName, .errorCode, .errorMessage] | @csv" > ) | column -t -s'",'
Sustituya your-ARN por el ARN de IAM de sus recursos.
Nota: El script de AWS CLI requiere el procesador JSON de la línea de comandos jq. Para ver el tutorial y las instrucciones de descarga, consulte JSON output format.
Para las distribuciones que usan el paquete yum, ejecute el siguiente comando:
$ sudo yum install jq
La salida de este comando tiene un aspecto similar al siguiente:
Time Identity ARN Event ID Service Action Error Message 2022-08-04T13:24:14Z arn:aws:iam::111122223333:user/article 42f420fe-ef06-43be-98a6-d5a0a90d7b4c dynamodb.amazonaws.com ListTables AccessDenied User: arn:aws:iam::111122223333:user/article is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:111122223333:table/* with an explicit deny in an identity-based policy 2022-08-04T13:51:22Z arn:aws:iam::111122223333:user/article b174e4e1-94a7-403e-a15f-1234aec796a6 dynamodb.amazonaws.com ListTables AccessDenied User: arn:aws:iam::111122223333:user/article is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:111122223333:table/* because no identity-based policy allows the dynamodb:ListTables action
En la salida anterior, no puede llevar a cabo la acción ListTables porque ha adjuntado un permiso al usuario 111122223333 que deniega la operación. El segundo mensaje significa que ninguna política basada en identidades permite la acción dynamodb:ListTables.
A continuación, se indican prácticas recomendadas para asegurarse de que su rol de IAM tenga los permisos necesarios para acceder a la tabla de DynamoDB:
- No incluya el rol de IAM en ninguna instrucción DENY de la política de confianza.
- Incluya el rol de IAM en la instrucción ALLOW de la política de confianza.
- Asegúrese que todas las condiciones de IAM especificadas en la instrucción ALLOW sean compatibles con la acción de la API sts:AssumeRole.
- Si utiliza AWS CLI para acceder a la tabla de DynamoDB, utilice la clave de acceso secreta y el ID de clave de acceso correctos.
Para obtener más información, consulte ¿Cómo puedo obtener datos para ayudar a solucionar errores de acceso de permiso denegado o no autorizado de IAM?
El acceso a la tabla de DynamoDB se restringe por organización
Si aparece el siguiente error al intentar acceder a la tabla de DynamoDB, significa que una política de control de servicio (SCP) le ha denegado el acceso:
"User: arn:aws:iam::11111222333:user/Admin is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:11111222333:table with an explicit deny in a service control policy"
Para solucionar este problema, actualice la política definida por organización.
Nota: Si deniega las operaciones de DynamoDB por organización, se denegarán todos los roles de IAM presentes en esa organización o cuenta de AWS. Aunque el rol o la cuenta tengan los permisos necesarios, el rol o la cuenta se denegarán.
La política de puntos de enlace de VPC de Amazon restringe la operación
Para mejorar la privacidad y la seguridad de la transferencia de datos entre la tabla de DynamoDB y su aplicación, puede utilizar una VPC de Amazon. Si el punto de enlace de VPC tiene una política de recursos de IAM que restringe el acceso de los usuarios de IAM a la tabla, aparece el siguiente error:
"An error occurred (AccessDeniedException) when calling the ListTables operation: User: arn:aws:iam::111222333444:user/Admin is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:11111222333:table/* with an explicit deny in a VPC endpoint policy"
Si recibe este error, significa que hay una instrucción DENY explícita en la política de puntos de enlace de VPC que deniega la operación ListTables al usuario Admin.
Para ver la política de puntos de enlace de VPC, ejecute el comando describe-vpc-endpoints de AWS CLI. También puede seguir estos pasos para ver la política en la consola:
- Abra la consola de Amazon VPC.
- En el panel de navegación, elija Puntos de enlace.
- Seleccione el punto de enlace de VPC.
- Elija la pestaña Política para ver la política de puntos de enlace.
Para resolver este problema, actualice la política de puntos de enlace de VPC.
No usó la MFA para iniciar sesión y acceder a la tabla
Supongamos que ha configurado la MFA en su cuenta con la siguiente política basada en identidades:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }
En este caso, se deniegan todas las acciones excepto las necesarias para usar la MFA con fines de autenticación. Si el usuario de IAM no inicia sesión con la MFA, se denegarán todas las acciones que no figuren en la política anterior, incluidas las acciones de DynamoDB.
Para resolver este problema, inicie sesión con la MFA.
La tabla de DynamoDB utiliza la clave administrada por el cliente o la clave administrada de AWS
Las tablas de DynamoDB que utilizan una clave administrada por el cliente o una clave de AWS Key Management Service (AWS KMS) deben tener los permisos correctos. Las políticas de claves de KMS deben conceder permiso a DynamoDB para usar la clave en su nombre. El usuario de IAM que accede a la tabla debe tener los siguientes permisos mínimos en la clave de AWS KMS:
- DynamoDB usa la clave de AWS KMS para generar y cifrar una clave de datos única para la tabla, denominada "clave de tabla". Para generar y cifrar esta clave, debe tener el permiso kms:GenerateDataKey.
- Para acceder a las claves cifradas, la clave de AWS KMS debe tener los permisos kms:Encrypt y kms:Decrypt.
- La clave de tabla se usa para proteger las claves de cifrado de datos que se usan para cifrar los datos de la tabla. Si la clave administrada por el cliente se modifica para una tabla, DynamoDB genera una nueva clave de tabla. A continuación, DynamoDB usa la nueva clave de tabla para volver a cifrar las claves de cifrado de datos. Para llevar a cabo esta operación, debe tener el permiso kms:ReEncrypt.
- DynamoDB utiliza la operación kms:DescribeKey para determinar si la clave administrada por el cliente que ha seleccionado existe en la cuenta y la región. Si la clave se elimina de forma aleatoria, la llamada DescribeKey devuelve un error.
- DynamoDB usa concesiones para establecer permisos en una clave administrada por el cliente. Estos permisos de concesión se utilizan cuando DynamoDB lleva a cabo tareas de protección continua de datos y de mantenimiento del sistema en segundo plano. Los permisos de concesión también se utilizan para generar claves de tablas. Por lo tanto, asegúrese de tener el permiso kms:CreateGrant.
Para obtener más información, consulte How Amazon DynamoDB uses AWS KMS.
No puede acceder a Información de colaboradores de CloudWatch para DynamoDB
Si recibe el error al intentar acceder a Información de colaboradores de CloudWatch para DynamoDB, es posible que no tenga los permisos de IAM correctos. Para acceder a Información de colaboradores de CloudWatch, debe tener los siguientes permisos:
Para obtener más información, consulte Como funciona Información de colaboradores de CloudWatch para DynamoDB
Nota: DynamoDB no admite el control de acceso basado en atributos (ABAC). Además, las condiciones basadas en etiquetas no se pueden usar para controlar el acceso en las tablas. En su lugar, utilice las condiciones de la política de IAM para conseguir un control de acceso detallado (FGAC).
Información relacionada
IAM: permite y deniega el acceso a varios servicios mediante programación y en la consola

Contenido relevante
- preguntada hace 2 meseslg...
- preguntada hace 3 meseslg...
- preguntada hace 5 meseslg...
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace 4 meseslg...
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año