如何對檔案閘道的 CloudWatch 健康日誌中的 S3AccessDenied 錯誤進行疑難排解?

2 分的閱讀內容
0

我嘗試在 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 身分和存取管理 (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 端點,則檢閱 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 (KMS) 加密,則檢閱加密金鑰的政策。金鑰政策必須將下列權限授予與檔案共用關聯的 IAM 角色:

  • kms:Decrypt
  • kms:Encrypt
  • kms:ReEncrypt
  • 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:ReEncrypt
  • 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 官方
AWS 官方已更新 2 年前