1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

S3オブジェクトロックが有効になっているオブジェクトの削除権限について

Last updated at Posted at 2025-02-12

最初に

AWS S3のオブジェクトロックは、データを誤って削除・上書きしないように保護するための機能です。本記事では、S3オブジェクトロックの種類や、AWS CLIとコンソールでの削除権限の違いについて解説し、実際に試した結果を共有します。

1. オブジェクトロックの種類と説明

S3オブジェクトロックには以下の2種類があります。

1.1 ガバナンスモード

  • 指定されたユーザー(rootアカウントまたは特定のIAMユーザー)がオブジェクトの削除・変更を制御できる。
  • 権限を持つユーザーはロックを解除し、オブジェクトの変更・削除が可能。

1.2 コンプライアンスモード

  • 設定された保持期間が経過するまで、どのユーザーもオブジェクトを削除・変更できない。
  • AWSアカウントのrootユーザーでさえ変更不可。

2. オブジェクトロックの削除権限について

S3のオブジェクトロックを操作するには、以下のIAM権限が必要です。

必要なIAMポリシー例

{
    "Effect": "Allow",
    "Action": [
        "s3:GetObjectRetention",
        "s3:PutObjectRetention",
        "s3:BypassGovernanceRetention",
        "s3:DeleteObject"
    ],
    "Resource": "*"
}
  • s3:GetObjectRetention:オブジェクトの保持ルールを取得。
  • s3:PutObjectRetention:オブジェクトの保持ルールを設定。
  • s3:BypassGovernanceRetention:ガバナンスモードのロックを解除して削除可能にする。
  • s3:DeleteObject:オブジェクトを削除。

3. オブジェクトの削除の権限はAWS CLIとコンソール上では違う

AWS CLIとS3マネジメントコンソールでは、オブジェクトロックが有効な場合の削除の挙動に違いがあります。

AWS CLIでの削除

CLIでは s3:BypassGovernanceRetention の権限を付与し、--bypass-governance-retention オプションを指定することで、ガバナンスモードのオブジェクトを削除できます。

aws s3 rm s3://objectlock-test-hoge/my-object --bypass-governance-retention

コンソールでの削除

S3管理コンソールでは、ガバナンスモードが有効なオブジェクトの削除を試みると、s3:BypassGovernanceRetention の権限が付与されていても、デフォルトでは削除ができません。

4. その理由

AWS CLIでは明示的に --bypass-governance-retention を指定することで、ガバナンスモードを解除して削除できます。しかし、S3コンソールでは、削除前にオブジェクトの保持ルールを変更する操作が必要です。

この違いは、GUIを通じた誤操作を防ぐためのAWSの設計意図によるものと考えられます。

5. CLIとコンソール上からやってみた

5.1 バケットとオブジェクトの作成

image.png

5.2 AWS CLIでの削除試行

ガバナンスモードでは --bypass-governance-retention を指定しないと削除できません。

aws s3 rm s3://objectlock-test-hoge/test.cli.txt

An error occurred (AccessDenied) when calling the DeleteObject operation というエラーが発生。

--bypass-governance-retention をつけると削除可能。

aws s3 rm s3://objectlock-test-hoge/test.cli.txt --bypass-governance-retention

5.3 コンソール上での削除試行

CLIと同様の権限では削除できません。
image.png

IAMポリシーにs3:GetBucketObjectLockConfiguration を追加すると削除可能。

{
    "Effect": "Allow",
    "Action": [
        "s3:GetObjectRetention",
        "s3:PutObjectRetention",
        "s3:BypassGovernanceRetention",
        "s3:GetBucketObjectLockConfiguration",
        "s3:DeleteObject"
    ],
    "Resource": "*"
}

6. まとめ

  • S3オブジェクトロックには「ガバナンスモード」と「コンプライアンスモード」がある。
  • オブジェクトの削除には適切なIAM権限が必要。
  • AWS CLIとコンソールでは削除の挙動が異なる。
  • AWS CLIでは --bypass-governance-retention を明示的に指定すると削除可能。
  • コンソール上での削除には、s3:GetBucketObjectLockConfigurationの権限が必要。

S3オブジェクトロックを正しく理解し、安全に運用しましょう!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?