0
0

AWS OrganizationsでのS3バケットアクセス制御

Posted at

AWS Organizations を使って、組織内で効率的にS3バケットのアクセス管理を行う方法について
組織内の全ユーザーにS3バケットの読み取りアクセスを許可し、外部のアクセスを制限するための設定の備忘です。


背景

AWS Organizationsを利用すると、複数のAWSアカウントを一元管理でき、ポリシーを組織全体で適用できます。
「組織内の全ユーザーにS3バケットの読み取り権限を与え、外部からのアクセスを禁止する」設定を行いたい。


ポリシー設計のポイント

組織内のユーザーのみがアクセスできるようにするには、次の2つのポイントを押さえる必要があります。

  1. 組織内の全アカウントのユーザーにアクセスを許可
  2. 組織外のユーザーやアカウントにアクセスを許可しない

これを実現するために重要なのが、aws:PrincipalOrgID という条件を使うことです。
この条件を使うと、AWS Organizationsに所属するユーザーにのみアクセスを許可できます。


バケットポリシーの設定例

以下は、S3バケットに対するポリシーの例です。このポリシーは、組織内のユーザーには読み取りアクセスを許可し、それ以外のユーザーからのアクセスを制限します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::YourBucketName/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgID": "o-xxxxxxxxxx"  // あなたのOrganization ID
        }
      }
    }
  ]
}

解説

  • Principal: "*"
    すべてのエンティティ(ユーザーやロール)を対象にしています。ただし、次のConditionによりアクセスは制限されます。

  • Condition: aws:PrincipalOrgID
    ここで、指定されたAWS Organizationsの組織IDに基づいてアクセスが制限されます。組織内のユーザーはこのバケットにアクセスできますが、組織外のユーザーやアカウントはアクセスできません。


OrganizationsとPrincipalの利点

  1. 一元管理が可能
    Principal に「*」を指定し、条件でアクセスを制御することで、組織全体のポリシーを1つの設定で簡潔に管理できます。

  2. 複数アカウント対応
    個別にアカウントやユーザーを指定する必要がなく、PrincipalOrgID を使うことで組織全体に適用できるため、管理が非常にシンプルになります。


まとめ

  • **aws:PrincipalOrgID**を使うことで、組織内のすべてのユーザーに効率的にアクセス権を付与し、組織外からのアクセスを防ぐことができます。

これで、AWS Organizationsを利用したマルチアカウント環境でのS3バケットのアクセス管理がより効率的に行えるはず

0
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
0
0