ファイルゲートウェイの CloudWatch ヘルスログの S3AccessDenied エラーをトラブルシューティングする方法を教えてください。

最終更新日: 2020 年 9 月 25 日

AWS Storage Gateway のネットワークファイルシステム (NFS) またはサーバーメッセージブロック (SMB) ファイル共有にアクセスしようとしています。ただし、Amazon CloudWatch からのファイルゲートウェイのヘルスログに S3AccessDenied エラーが表示されています。この問題を解決するには、どうすれば良いですか?

解決方法

S3AccessDenied エラーを解決するには、ファイル共有に関連付けられているアクセス許可ポリシーを確認する必要があります。次に、不足している必要なアクセス許可を追加する必要があります。Access Denied エラーが表示されたときをもとに、確認する必要のあるアクセス許可を特定します。

  • ファイル共有の作成時、ファイル共有の作成が作成中または使用不能状態のままになる
  • ファイル共有へのファイルの書き込み
  • ファイル共有からのファイルの読み取り

ファイル共有の作成時、ファイル共有の作成が作成中または使用不能状態のままになる

ファイル共有の作成時に Access Denied エラーが発生し、ファイル共有が作成状態または使用不能状態のままになっている場合、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 エンドポイントを使用している場合は、 VPC エンドポイントポリシーを確認します。ポリシーにより、ファイルゲートウェイが S3 バケットおよびオブジェクトにアクセスすることを許可されていることを確認します。

ファイル共有へのファイルの書き込み

ファイル共有にファイルを書き込むときに Access Denied エラーが表示される場合、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:ReEncrypt
  • kms:GenerateDataKey
  • kms:DescribeKey*

ファイル共有の IAM ロールと AWS KMS キーが別の AWS アカウントに属している場合、これらのアクセス権限はキーポリシーと IAM ロールのポリシーの両方で設定する必要があります。

ファイル共有からのファイルの読み取り

ファイル共有からファイルを読み取るときに Access Denied エラーが表示される場合、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"
}
]
}

この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?