S3グループ ポリシーの例

グループ ポリシーは、そのポリシーが関連付けられたグループに対するアクセス権限を指定します。プリンシパルは暗黙的に決まるため、このポリシーにはPrincipal要素はありません。グループ ポリシーは、Tenant ManagerまたはAPIを使用して設定します。

例:Tenant Managerを使用したグループ ポリシーの設定

Tenant Managerを使用してグループを追加または編集する場合、グループのメンバーに付与するS3アクセス権限を定義するオプションを選択できます。
  • No S3 Access:デフォルト オプション。バケット ポリシーでアクセスが許可されていないかぎり、このグループのユーザはS3リソースにアクセスできません。このオプションを選択すると、デフォルトではrootユーザにのみS3リソースへのアクセスが許可されます。
  • Read Only Access:このグループのユーザには、S3リソースへの読み取り専用アクセスが許可されます。たとえば、オブジェクトをリストして、オブジェクト データ、メタデータ、およびタグを読み取ることができます。このオプションを選択すると、テキストボックスに読み取り専用グループ ポリシーのJSON文字列が表示されます。この文字列は編集できません。
  • Full Access:このグループのユーザには、バケットを含むS3リソースへのフル アクセスが許可されます。このオプションを選択すると、テキストボックスにフル アクセス グループ ポリシーのJSON文字列が表示されます。この文字列は編集できません。
  • Custom:このグループのユーザには、テキストボックスで指定した権限が付与されます。

    この例では、指定したバケット内の固有のフォルダ(キー プレフィックス)の参照とアクセスだけがグループのメンバーに許可されます。
    テナント グループにカスタム グループ ポリシーを追加する画面

例:グループにすべてのバケットへのフル アクセスを許可する

この例では、バケット ポリシーで明示的に拒否されている場合を除き、グループのすべてのメンバーにテナント アカウント所有のすべてのバケットへのフル アクセスが許可されます。
{
  "Statement": [
    {
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

例:グループにすべてのバケットへの読み取り専用アクセスを許可する

この例では、バケット ポリシーで明示的に拒否されている場合を除き、グループのすべてのメンバーにS3リソースへの読み取り専用アクセスが許可されます。たとえば、オブジェクトをリストして、オブジェクト データ、メタデータ、およびタグを読み取ることができます。

{
  "Statement": [
    {
      "Sid": "AllowGroupReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:ListBucketVersions",
        "s3:GetObject",
        "s3:GetObjectTagging",
        "s3:GetObjectVersion",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

例:グループ メンバーにバケット内の各自の「フォルダ」のみへのフル アクセスを許可する

この例では、指定したバケット内の固有のフォルダ(キー プレフィックス)の参照とアクセスだけがグループのメンバーに許可されます。それらのフォルダのプライバシー設定を決めるときは、他のグループ ポリシーやバケット ポリシーのアクセス権限を考慮する必要があることに注意してください。

{
  "Statement": [
    {
      "Sid": "AllowListBucketOfASpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::department-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "${aws:username}/*"
        }
      }
    },
    {
      "Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:*Object",
      "Resource": "arn:aws:s3:::department-bucket/${aws:username}/*"
    }
  ]
}

例:PutOverwriteObject権限

この例では、PutOverwriteObjectとDeleteObjectのEffectをDenyに設定して、オブジェクトのデータ、ユーザ定義のメタデータ、S3オブジェクトのタグが削除または変更されないように保護しています。

{
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:PutOverwriteObject",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
      ],
      "Resource": "arn:aws:s3:::wormbucket/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"
      
},
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::wormbucket"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"
      
},
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::wormbucket/*"
    }
  ]
}