PrincipalOrgPathsとは

IAMのグローバル条件コンテキストキーaws:PrincipalOrgPathsが新しく追加されました

“aws:PrincipalOrgPaths”について公式サイトによると

AWS組織のAWSアカウントのグループである組織単位(OU)をAWS Identity and Access Management(IAM)ポリシーで参照できるようになり、IAMプリンシパル(ユーザーとロール)からAWSリソースへのアクセスを組織内で簡単に定義できるようになりました。 ポリシーで新しい条件キー”aws:PrincipalOrgPaths”を使用することで、OUのプリンシパルのメンバーシップに基づいてアクセスを許可または拒否できます。これにより、AWS環境で所有するアカウント間でリソースをこれまでになく簡単に共有できます。

とあります。

使い方

aws:PrincipalOrgPathsが指定することの出来る条件は、
AWS Organizationsの組織、Root、OU(Organization Unit)です。

たとえば、プリンシパルが組織”o-1122334455″、ルート”r-abcd”内のID”ou-abcd-zzyyxxww”を持つOUのメンバーだったとき、 ポリシーのCondition要素は次のようになります。


"Condition":{ "ForAnyValue:StringLike":{ "aws:PrincipalOrgPaths":[ "o-1122334455/r-abcd/ou-abcd-zzyyxxww/" ] } }

何ができるようになったか

IAMロールへのアクセスを組織のOUのアカウントのみに制限する

ロールの許可をするのをグループで指定できなかったため、ロールの許可設定にユーザーを都度追加する必要がありました。→awsのIAMポリシーでPrincipalにIAM Groupは指定できない

新しく追加された条件キー“aws:PrincipalOrgPaths”を利用することでOU単位でアクセス制限が設定できるようになるため、 AWSアカウントIDを一つ一つ管理する必要が無くなります。

組織内のOU内のすべてのプリンシパルにS3バケットアクセスを許可

公式ブログに掲載されている例で、

機械学習モデルのトレーニングに使用する画像を含むS3バケットトレーニングデータにアクセスするためのアクセス許可をMachine Learningチームに付与する例を考えてみましょう。 Machine Learningチームが所有するすべてのAWSアカウントが、ou-machinelearnというIDを持つ特定のOUの一部になるように組織を設定しました。この例では、組織IDはo-myorganizationです。

アクセス許可を付与するには、以下に示すように、トレーニングデータリソースのS3バケットポリシーを作成します。

{
    "Version":"2012-10-17",
    "Statement":{
        "Sid":"TrainingDataS3ReadOnly",
        "Effect":"Allow",
        "Principal": "*",
        "Action":"s3:GetObject",
        "Resource":"arn:aws:s3:::training-data/*",
        "Condition":{
            "ForAnyValue:StringLike":{
                "aws:PrincipalOrgPaths":["o-myorganization/*/ou-machinelearn/*"]
            }
        }
    }
}

今までAWSのアカウントIDをもとに管理する必要があったため、新しいアカウントが追加される度に手動でリストにIDを追加しなければいけなかったS3パケットポリシーを、OUのIDに置き換えることにより都度追加する必要が無くなりました。

公式ブログに(まだ日本語対応していませんが)、機能や使い方などが詳しく載っています。
Use IAM to share your AWS resources with groups of AWS accounts in AWS Organizations