我有一个s3存储桶策略,该策略可阻止所有未加密的上传。
雅典娜需要使用这个存储桶。并且,当使用雅典娜的服务正在运行时,一切都将正常运行。
但是,初始化Athena DB时,它将在s3存储桶中创建文件并将其删除。
像这样的内容:18b21651-f514-481a-aa62-ef26db73c6c0.txt
,其中包含DB的描述。
由于该文本文件未加密,因此出现访问拒绝错误。但是我无法控制Athena对该文件进行加密。
我正在寻找一项政策,允许该文件未经加密地上传,但是所有其他文件都必须加密。
由于无法使用调用Athena的服务正在使用的IAM_ROLE,因此我不确定该策略使用什么principle
。什么是“本机”雅典娜角色/用户?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "deny unencrypted object upload",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucketname/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
}
]
}
观察到错误:
aws_athena_database.main: reason: Access denied when writing to location: s3://bucketname/36dc88f0-a7b7-4956-95c9-062a8ac46d5f.txt
答案 0 :(得分:2)
使用NotPrincipal
键将雅典娜从您的“拒绝”政策中免除:
{
"Sid": "deny unencrypted object upload",
"Effect": "Deny",
"Principal": "*",
"NotPrincipal": "athena.amazonaws.com",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucketname/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
}