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*"
]
}
}
}
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.