¿Cómo puedo resolver los problemas de acceso a un secreto cifrado de AWS Secrets Manager?

5 minutos de lectura
0

Quiero recuperar o acceder a un secreto de AWS Secrets Manager, pero recibo un error.

Resolución

Si no puede recuperar o acceder a un secreto de Secrets Manager, es posible que aparezca uno de los siguientes errores:

  • "No puede acceder a un secreto desde otra cuenta de AWS si cifra el secreto con la clave de servicio de KMS predeterminada."
  • "No se permite el acceso a KMS"
  • "Fallo interno"
  • "Se ha producido un error desconocido"
  • «No se permite el acceso al KMS. Esta versión del secreto no está cifrada con la clave de KMS actual."

Para solucionar cualquiera de estos errores, siga estos pasos.

Nota: Si recibe errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

Compruebe que el secreto no esté cifrado con una clave gestionada de AWS KMS al acceder a un secreto de otra cuenta.

Las políticas de claves gestionadas de AWS no se pueden editar porque son solo de lectura. Sin embargo, puede consultar las políticas de claves gestionadas de AWS Key Management Service (AWS KMS) y de claves administradas por el cliente. Como las políticas de claves gestionadas de AWS KMS no se pueden actualizar, tampoco se pueden conceder permisos entre cuentas para esas políticas de claves. Otras cuentas de AWS no pueden acceder a los secretos de Secrets Manager cifrados con una clave gestionada de AWS KMS.

En el caso de las cuentas cruzadas, compruebe que la política basada en la identidad y la política basada en los recursos permitan a la entidad principal acceder a la clave de AWS KMS.

La política de identidad debe permitir a la entidad principal acceder a la clave de AWS KMS, de forma similar a la siguiente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:Region:AccountID:key/EncryptionKey"
    }
  ]
}

La política basada en los recursos debe permitir a la entidad principal acceder a la clave de AWS KMS, de forma similar a la siguiente:

{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::AccountID:user/UserName",
      "arn:aws:iam::AccountID:role/RoleName"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

Tras actualizar la clave de AWS KMS, compruebe que el secreto esté cifrado con la nueva clave de AWS KMS.

La actualización de la clave de AWS KMS asociada a un secreto de Secrets Manager mediante AWS CLI no vuelve a cifrar las versiones actuales o anteriores del secreto con la nueva clave de KMS. Esto significa que las cuentas externas, también denominadas cuentas cruzadas, no pueden acceder al secreto porque el este no se ha vuelto a cifrar con la nueva clave de AWS KMS. Debe volver a cifrar el secreto con la nueva clave de AWS KMS para recuperar el valor secreto de la cuenta cruzada.

Nota: El uso de la consola de Secrets Manager para cambiar la clave de AWS KMS asociada a un secreto de forma predeterminada crea una nueva versión del secreto y la cifra con la nueva clave de AWS KMS. Para más información, consulte Cifrado y descifrado de secretos en AWS Secrets Manager.

Vuelva a cifrar el secreto con la nueva clave de AWS KMS.

Siga estos pasos para volver a cifrar el secreto con la nueva clave de AWS KMS mediante la Consola de gestión de AWS o AWS CLI.

Consola de administración de AWS

1.    Abra la consola Secrets Manager.

2.    En Nombre del secreto, elija su secreto.

3.    Elija Acciones y, a continuación, en la lista desplegable, elija la clave de AWS KMS, seleccione la casilla Crear una nueva versión del secreto con una nueva clave de cifrado y, a continuación, elija Guardar.

AWS CLI

Siga estos pasos desde la cuenta de origen en la que reside el secreto.

1.    Ejecute el comando get-secret-value de AWS CLI de forma similar a la siguiente:

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --query SecretString --output text

    {"CrossAccount":"DefaultEncryption"}

2.    Cree un archivo con el nombre creds.txt.

$ cat creds.txt

    {"CrossAccount":"DefaultEncryption"}

3.    Ejecute el comando update-secret de AWS CLI para volver a cifrar la clave de cifrado de forma similar a la siguiente:

.    Nota: Si usa una clave gestionada por el cliente, también deberá tener los permisos kms:GenerateDataKey y kms:Decrypt en la clave.

$ aws secretsmanager update-secret --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --secret-string file://creds.txt

    {
    "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:cross-account",
    "Name": "cross-account",
    "VersionId": "f68246e8-1cfb-4c3b-952b-17c9298d3462"
    }

4.    Ejecute el comando get-secret-value de AWS CLI desde una cuenta cruzada de forma similar a la siguiente:

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --version-stage AWSCURRENT --profile

    {"CrossAccount":"DefaultEncryption"}

Información relacionada

Cómo usar las políticas basadas en los recursos en la consola de AWS Secrets Manager para acceder de forma segura a los secretos de las cuentas de AWS

¿Cómo comparto los secretos de AWS Secrets Manager entre cuentas de AWS?

Permisos para secretos de AWS Secrets Manager para usuarios en una cuenta diferente

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años