es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede leer el archivo del cubo s3 encriptado.

No puedo leer un archivo desde un bucket s3 encriptado en una lambda.

A continuación se muestra mi documento de política donde estoy dando acceso a s3 y a kms. He adjuntado esta política a la lambda.

Cuando intento leer un archivo del bucket, obtengo el error de “Acceso denegado”.

Añado la condición “kms:RequestAlias” a la declaración de kms para que la lambda sólo tenga acceso a las claves que tienen “mytoken” en el alias.

Sospecho que aquí es donde estoy cometiendo un error, porque si elimino la condición, la lambda tiene acceso a todas las claves y lee el archivo cifrado sin problemas.

Alguien puede ayudarme a restringir el acceso sólo a las claves que tienen “mytoken” en el alias.

data "aws_iam_policy_document" "lambda_s3_policy_doc" {
  statement {
    sid = ""
    effect = "Allow"
    resources = [
      "arn:aws:s3:::mybucket",
      "arn:aws:s3:::mybucket/*"
    ]
    actions = [
      "s3:AbortMultipartUpload",
      "s3:CreateBucket",
      "s3:DeleteObject",
      "s3:GetBucketLocation",
      "s3:GetObject",
      "s3:ListBucket",
      "s3:ListBucketMultipartUploads",
      "s3:ListMultipartUploadParts",
      "s3:PutObject"
    ]
  }

  statement {
    effect = "Allow"

    actions = [
      "kms:Decrypt",
      "kms:DescribeKey",
      "kms:Encrypt",
      "kms:GenerateDataKey"
    ]

    resources = ["*"]

    condition {
      test     = "StringLike"
      variable = "kms:RequestAlias"
      values   = [
        "alias/*mytoken*"
      ]
    }
  }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar en la condición de la declaración KMS. Para restringir el acceso solo a claves que tengan “mytoken” en el alias, asegúrate de que el alias esté especificado correctamente en la condición.

    En el documento de política actual, la condición está establecida en “alias/mytoken“, lo que significa que solo coincidirá con aliases que tengan “mytoken” en el nombre, pero pueden tener cualquier cadena antes o después de ella.

    Para restringir el acceso solo a aliases con “mytoken” en la posición exacta, puedes cambiar la condición a “alias/mytoken*”. Esto asegurará que el alias empiece con “mytoken” y pueda tener cualquier cadena después.

    Una vez que hayas actualizado la condición, deberías poder leer el archivo del bucket S3 cifrado en la función Lambda.

Comments are closed.