【发布时间】:2020-01-23 18:15:08
【问题描述】:
我无法将最终用户访问权限配置为跨账户共享存储桶,需要帮助确定使用客户端访问存储桶是否有特定的策略要求,而不是直接使用 CLI。
IAM 用户账户在我们的“核心”AWS 账户中进行管理。 S3 存储桶预置在我们的“开发”AWS 账户中。 Dev Account 中的 S3 Bucket 使用 Dev Account 中的 KMS 密钥加密。
我们已配置存储桶策略以允许用户访问。 我们已配置用户策略以允许访问 S3 存储桶。 我们已配置用户策略以允许使用 KMS 密钥。
使用 CLI 时,我们的用户帐户可以成功访问和使用 S3 存储桶。当尝试连接 GUI 客户端(Win-SCP、CyberDuck、MAC ForkLift)时,我们会收到权限被拒绝错误。
存储桶政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::[DEVACCOUNT#]:role/EC2-ROLE-FOR-APP-ACCESS",
"arn:aws:iam::[COREACCOUNT#]:user/end.user"
]
},
"Action": "s3:List*",
"Resource": [
"arn:aws:s3:::dev-mybucket",
"arn:aws:s3:::dev-mybucket/*"
]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::[DEVACCOUNT#]:role/EC2-ROLE-FOR-APP-ACCESS",
"arn:aws:iam::[COREACCOUNT#]:user/end.user"
]
},
"Action": [
"s3:GetObject",
"s3:Put*"
],
"Resource": "arn:aws:s3:::dev-mybucket/*"
}
]
}
用户政策 - 访问 KMS
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUseOfDevAPPSKey",
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": [
"arn:aws:kms:ca-central-1:[DEVACCOUNT#]:key/[redacted-key-number]"
]
},
{
"Sid": "AllowAttachmentOfPersistentResources",
"Effect": "Allow",
"Action": [
"kms:CreateGrant",
"kms:List*",
"kms:RevokeGrant"
],
"Resource": [
"arn:aws:kms:ca-central-1:[DEVACCOUNT#]:key/[redacted-key-number]"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
用户政策 - 访问 S3 存储桶
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccessToMyBucket",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::dev-mybucket/",
"arn:aws:s3:::dev-mybucket/*"
]
}
]
}
通过 aws s3 命令,我们可以“ls”内容和“cp”内容从本地到远程以及从远程到本地。
使用 GUI 客户端配置访问时,我们总是会收到一些通用的“权限被拒绝”或“访问被拒绝”类型错误。
【问题讨论】:
标签: amazon-web-services amazon-s3