我如何解决文件网关 CloudWatch 运行状况日志中的 S3AccessDenied 错误?
我想在 AWS Storage Gateway 上访问网络文件系统(NFS)或服务器消息块(SMB)文件共享。但是,我的文件网关的 Amazon CloudWatch 运行状况日志显示 S3AccessDenied 错误。
解决方法
要解决 S3AccessDenied 错误,请查看与您的文件共享关联的权限策略。然后,添加所有缺少的必需权限。根据您收到“访问被拒绝”错误的时间确定必须查看的权限:
- 创建文件共享时文件共享卡在正在创建或不可用状态
- 将文件写入文件共享
- 从文件共享中读取文件
创建文件共享时文件共享卡在正在创建或不可用状态
在创建文件共享时,如果文件共享卡在正在创建或不可用状态,您可能会收到“访问被拒绝”错误。CloudWatch 日志与以下示例类似:
{ "severity": "ERROR", "bucket": "AWSDOC-EXAMPLE-BUCKET", "prefix": "", "roleArn": "arn:aws:iam::123456789:role/service-role/StorageGatewayBucketAccessRolec6914add-b232-40dc-abef-4a9eeaaed8", "source": "share-ABCD1234", "type": "S3AccessDenied", "operation": "s3:ListObjects", "gateway": "sgw-ABCD1234", "timestamp": "1597486809991" }
查看以下权限设置:
1. 检查与您的文件共享关联的 AWS Identity and Access Management(IAM)角色。该角色必须具有关联的 Amazon Simple Storage Service(Amazon S3)桶的以下权限:
- s3:GetBucketLocation
- s3:ListBucket
2. 查看关联桶的桶策略。确认没有明确的拒绝语句("Effect": "Deny"),它会阻止以下权限所需的访问权限:
- s3:GetBucketLocation
- s3:ListBucket
3. 如果文件网关所在的 Amazon Virtual Private Cloud(Amazon VPC)使用 Amazon S3 VPC 端点,请查看端点策略。确认该策略允许您的文件网关访问 S3 桶和对象。
将文件写入文件共享
如果您在向文件共享写入文件时出现“访问被拒绝”错误,CloudWatch 日志与以下示例类似:
{ "severity": "ERROR", "bucket": "AWSDOC-EXAMPLE-BUCKET", "prefix": "/test1", "roleArn": "arn:aws:iam::123456789:role/service-role/StorageGatewayBucketAccessRole0617b6ee-4809-48bc-b646-8dda9e9c32", "source": "share-ABCD1234", "type": "S3AccessDenied", "operation": "S3Upload", "gateway": "sgw-ABCD1234", "timestamp": "1597493322178" }
查看以下权限设置:
1. 检查与您的文件共享关联的 IAM 角色。确认它对关联的 Amazon S3 桶具有以下权限:
- s3:PutObject
- s3:PutObjectAcl
2. 查看关联桶的桶策略。确认没有明确的拒绝语句("Effect": "Deny"),它会阻止以下权限所需的访问权限:
- s3:PutObject
- s3:PutObjectAcl
3. 如果文件网关所在的 Amazon VPC 使用 Amazon S3 VPC 端点,请查看 VPC 端点策略。确认该策略允许您的文件网关访问 S3 桶和对象。
4. 如果关联的 S3 桶是使用 AWS Key Management Service(AWS KMS)加密的,请查看加密密钥的策略。该密钥策略必须向与您的文件共享关联的 IAM 角色授予以下权限:
- kms:Decrypt
- kms:Encrypt
- kms:ReEncryptFrom
- kms:ReEncryptTo
- kms:GenerateDataKey
- kms:DescribeKey
查看文件共享的 IAM 角色和 AWS KMS 密钥。如果二者分别属于不同的 AWS 账户,必须在密钥策略和 IAM 角色的策略中同时设置这些权限。
从文件共享中读取文件
如果您在从文件共享读取文件时出现“访问被拒绝”错误,CloudWatch 日志与以下示例类似:
{ "severity": "ERROR", "bucket": "AWSDOC-EXAMPLE-BUCKET", "prefix": "/test1", "roleArn": "arn:aws:iam::123456789:role/service-role/StorageGatewayBucketAccessRole0617b6ee-4809-48bc-b646-8dda9e9c32", "source": "share-ABCD1234", "type": "S3AccessDenied", "operation": "s3:HeadObject", "gateway": "sgw-ABCD12347", "timestamp": "1597488260202" }
查看以下权限设置:
1. 检查与您的文件共享关联的 IAM 角色。确认它对关联的 Amazon S3 桶具有以下权限:
- s3:GetObject
- s3:GetObjectAcl
2. 查看关联桶的桶策略。确认没有明确的拒绝语句("Effect": "Deny"),它会阻止以下权限所需的访问权限:
- s3:GetObject
- s3:GetObjectAcl
3. 如果文件网关所在的 Amazon VPC 使用 Amazon S3 VPC 端点,请查看 VPC 端点策略。确认该策略允许您的文件网关访问 S3 桶和对象。4. 如果关联的 S3 桶是使用 AWS KMS 加密的,请查看加密密钥的策略。该密钥策略必须向与您的文件共享关联的 IAM 角色授予以下权限:
- kms:Decrypt
- kms:Encrypt
- kms:ReEncryptFrom
- kms:ReEncryptTo
- kms:GenerateDataKey
- kms:DescribeKey
查看文件共享的 IAM 角色和 AWS KMS 密钥。如果二者分别属于不同的 AWS 账户,必须在密钥策略和 IAM 角色的策略中同时设置这些权限。**注意:**以下是 IAM 策略示例。它向您的文件共享授予列出桶以及从桶(AWSDOC-EXAMPLE-BUCKET)上传、下载和删除对象所需的权限:
{ "Version": "2012-10-17", "Statement": [{ "Action": ["s3:GetAccelerateConfiguration", "s3:GetBucketLocation", "s3:GetBucketVersioning", "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads"], "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET", "Effect": "Allow" }, { "Action": ["s3:AbortMultipartUpload", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl"], "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*", "Effect": "Allow" }] }
相关信息
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 9 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前