AWS Organizations での組織へのアクセス許可の管理 - AWS Organizations

AWS Organizations での組織へのアクセス許可の管理

組織のルート、OU、アカウント、ポリシーなどの AWS リソースはすべて、AWS アカウント によって所有され、リソースの作成またはアクセスを行うアクセス許可は、アクセス許可ポリシーによって管理されます。組織では、管理アカウントはすべてのリソースを所有します。アカウント管理者は、IAM アイデンティティ (ユーザー、グループ、ポリシー) にアクセス許可ポリシーをアタッチして、AWS リソースへのアクセスを制御できます。

注記

アカウント管理者 (または管理者ユーザー) は、管理者アクセス許可を持つユーザーです。詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティベストプラクティス」を参照してください。

アクセス許可を付与する場合、アクセス許可を取得するユーザー、取得するアクセス許可の対象となるリソース、およびそれらのリソースに対して許可される特定のアクションを決定します。

デフォルトでは、IAM ユーザー、グループ、ロールにはアクセス許可がありません。組織の管理アカウントの管理者として管理タスクを行うか、管理アカウントの他の IAM ユーザーまたはロールに管理者のアクセス許可を委任できます。そのためには、IAM ユーザー、グループ、またはロールに IAM アクセス許可ポリシーをアタッチします。デフォルトでは、ユーザーにこれらを行う権限はありません。これは、暗黙的な拒否と呼ばれます。このポリシーによって、暗黙的な拒否は、ユーザーが実行するアクションや、アクションを実行できるリソースを指定する明示的な許可に上書きされます。ロールにアクセス許可が付与されている場合は、組織内の他のアカウントのユーザーはそのロールを引き受けることができます。

AWS Organizations リソースおよびオペレーション

本セクションでは、AWS Organizations 概念を IAM と同等の概念とどのようにマッピングされるかを説明します。

リソース

AWS Organizations では、次のリソースへのアクセスをコントロールできます。

  • 組織の階層構造を構成するルートおよび OU

  • 組織のメンバーであるアカウント

  • 組織のエンティティにアタッチするポリシー

  • 組織の状態の変更に使用するハンドシェイク

このようなリソースにはそれぞれ、一意の Amazon リソースネーム (ARN) が関連付けられています。IAM アクセス許可ポリシーの Resource 要素の ARN を指定して、リソースへのアクセスをコントロールします。AWS Organizations で使用されるリソースの ARN 形式のリストについては、「Service Authorization Reference」の「Resources types defined by AWS Organizations」をご覧ください。

オペレーション

AWS には、組織のリソースを操作する一連のオペレーションが用意されています。そのため、リソースの作成、一覧表示、変更、内容へのアクセス、削除などを行うことができます。ほとんどのオペレーションは、オペレーションの実行権限を制御する IAM ポリシーの Action 要素で参照できます。IAM ポリシーでアクセス許可として使用できる AWS Organizations オペレーションのリストについては、「Service Authorization Reference」の「Actions defined by organizations」をご覧ください。

ActionResource を 1 つのアクセス許可ポリシー Statement で組み合わせると、特定のアクションを使用できるリソースが正確に制御されます。

条件キー

AWS は特定のアクションにおいて、より詳細な制御を実現するクエリを実行できる条件キーを提供しています。IAM ポリシーの Condition 要素でこれらの条件キーを参照し、ステートメントが一致しているとみなされる条件を満たすように追加条件を指定することができます。

次の条件キーは、AWS Organizations を使用する場合に特に役立ちます。

  • aws:PrincipalOrgID - リソースベースのポリシーの Principal 要素の指定を簡素化します。このグローバルキーは、組織内のすべての AWS アカウントのすべてのアカウント ID を一覧表示する代わりに使用できます。組織のメンバーであるすべてのアカウントを一覧表示せずに、Condition 要素に組織 ID を指定することができます。

    注記

    このグローバル条件は、組織の管理アカウントにも適用されます。

    詳細については、「IAM ユーザーガイド」で「AWS グローバル条件コンテキストキー」の PrincipalOrgID の説明を参照してください。

  • aws:PrincipalOrgPaths - この条件キーを使用して、特定の組織ルート、OU、またはその子のメンバーを照合します。リクエストを行うプリンシパル (ルートユーザー、IAM ユーザー、またはロール) が指定された組織パスにある場合、aws:PrincipalOrgPaths 条件キーは true を返します。パスとは、AWS Organizations エンティティの構造をテキストで表記したものです。パスの詳細については、「IAM ユーザーガイド」の「Understand the AWS Organizations entity path」を参照してください。この条件キーの使用の詳細については、IAM ユーザーガイドの「aws:PrincipalOrgPaths」を参照してください。

    例えば次の条件要素は、同じ組織内の 2 つの OU のいずれかのメンバーと一致します。

    "Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-def0-awsbbbbb/", "o-a1b2c3d4e5/r-f6g7h8i9j0example/ou-jkl0-awsddddd/" ] } }
  • organizations:PolicyType - この条件キーを使用して、Organization ポリシー関連 API オペレーションを、指定したタイプの Organization ポリシーでのみ動作するように制限できます。この条件キーは、Organizations ポリシーとやり取りするアクションを含むポリシーステートメントに適用できます。

    この条件キーでは、次の値を使用できます。

    • SERVICE_CONTROL_POLICY

    • BACKUP_POLICY

    • TAG_POLICY

    • CHATBOT_POLICY

    • AISERVICES_OPT_OUT_POLICY

    例えば、次のポリシー例では、ユーザーが任意の Organizations オペレーションを実行できます。ただし、ポリシー引数を取るオペレーションをユーザーが実行した場合、指定したポリシーがタグ付けポリシーである場合にのみオペレーションが許可されます。ユーザーが他のタイプのポリシーを指定した場合、オペレーションは失敗します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "IfTaggingAPIThenAllowOnOnlyTaggingPolicies", "Effect": "Allow", "Action": "organizations:*", "Resource": "*", "Condition": { "StringLikeIfExists": { "organizations:PolicyType": [ "TAG_POLICY" ] } } } ] }
  • organizations:ServicePrincipalEnableAWSServiceAccess オペレーションまたは DisableAWSServiceAccess オペレーションで、他の AWS のサービスを使用して信頼されたアクセスを有効または無効にする場合の条件として使用できます。organizations:ServicePrincipal を使用して、これらのオペレーションからのリクエストを、承認されたサービスプリンシパル名のリストに制限できます。

    例えば以下のポリシーでは、ユーザーは、AWS Firewall Manager を使用して信頼されたアクセスを有効および無効にする場合のみ、AWS Organizations を指定することができます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyAWSFirewallIntegration", "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "organizations:ServicePrincipal": [ "fms.amazonaws.com" ] } } } ] }

IAM ポリシーでアクセス許可として使用できる AWS Organizations 固有の条件キーのリストについては、「Service Authorization Reference」の「Condition keys for AWS Organizations」を参照してください。

リソース所有権について

AWS アカウント は、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソース作成リクエストを認証する「プリンシパルエンティティ」(つまり、ルートユーザー、IAM ユーザー、IAM ロール) の AWS アカウント です。組織の場合は、これは常に管理アカウントになります。組織のリソースの作成またはアクセスを行うほとんどのオペレーションは、メンバーアカウントから呼び出すことができません。次の例は、この仕組みを示しています。

  • 管理アカウントのルートアカウントの認証情報を使用して OU を作成する場合の管理アカウントは、リソースの所有者です。(AWS Organizations で、リソースは OU です)。

  • 管理アカウントに IAM ユーザーを作成し、そのユーザーに OU を作成するためのアクセス権限を付与する場合、そのユーザーは OU を作成できます。ただし、OU リソースを所有しているのは、このユーザーが属する管理アカウントです。

  • OU を作成するためのアクセス権限を持つ管理アカウントに IAM ロールを作成する場合は、ロールを引き受けることのできるユーザーはいずれも OU を作成できます。OU リソースを所有するのは、ロール (引き受けるユーザーではない) が属する管理アカウントです。

リソースへのアクセスの管理

アクセス権限ポリシー では、誰が何にアクセスできるかを記述します。次のセクションで、アクセス許可ポリシーを作成するために使用可能なオプションについて説明します。

注記

このセクションでは、AWS Organizations のコンテキストでの IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメントについては、「IAM ユーザーガイド」を参照してください。IAM ポリシー構文の詳細と説明については、「IAM ユーザーガイド」の「IAM JSON ポリシーリファレンス」を参照してください。

IAM 認証情報にアタッチされたポリシーは、アイデンティティベースのポリシー (IAM ポリシー) と呼ばれます。リソースにアタッチされたポリシーを、リソースベースのポリシーと呼びます。AWS Organizations は、ID ベースのポリシー (IAMポリシー) のみをサポートします。

ID ベースのアクセス許可ポリシー (IAM ポリシー)

ポリシーを IAM ID にアタッチして、その ID が AWS リソースに対してオペレーションを実行できるようにすることができます。例えば、次の操作を実行できます。

  • アカウントのユーザーまたはグループにアクセス許可ポリシーをアタッチする - サービスコントロールポリシー (SCP) または OU などの AWS Organizations リソースを作成するための権限をユーザーに付与するには、ユーザーまたはユーザーが所属するグループにアクセス許可ポリシーをアタッチします。ユーザーまたはグループを組織の管理アカウントにする必要があります。

  • アクセス許可ポリシーをロールにアタッチする (クロスアカウントのアクセス許可を付与する) - アイデンティティベースのアクセス許可ポリシーを IAM ロールにアタッチして、クロスアカウントのアクセス許可を組織に付与することができます。例えば、管理アカウントの管理者はロールを作成し、次のようにクロスアカウントのアクセス許可をメンバーアカウントのユーザーに付与できます。

    1. 管理アカウントの管理者は IAM ロールを作成し、ロールにアクセス許可ポリシーをアタッチして組織のリソースにアクセス許可を付与します。

    2. 管理アカウントの管理者は、そのロールを引き受ける Principal として、メンバーアカウントの ID を識別するロールに信頼ポリシーをアタッチします。

    3. その後、メンバーアカウント管理者は、ロールを引き受けるアクセス権限をメンバーアカウントのユーザーに委任できます。これにより、メンバーアカウントのユーザーは、管理アカウントや組織のリソースを作成し、アクセスできるようになります。ロールを引き受けるアクセス許可を AWS サービスに付与する場合は、信頼ポリシーのプリンシパルも AWS サービスのプリンシパルにできます。

    IAM を使用した許可の委任の詳細については、「IAM ユーザーガイド」の「アクセス管理」を参照してください。

以下に示しているのは、組織の CreateAccount アクションの実行をユーザーに許可するポリシーの例です。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"Stmt1OrgPermissions", "Effect":"Allow", "Action":[ "organizations:CreateAccount" ], "Resource":"*" } ] }

ポリシーの Resource 要素に部分的な ARN を指定して、リソースのタイプを示すこともできます。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowCreatingAccountsOnResource", "Effect":"Allow", "Action":"organizations:CreateAccount", "Resource":"arn:aws:organizations::*:account/*" } ] }

作成するアカウントに特定のタグを含まないアカウントの作成を拒否することもできます。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyCreatingAccountsOnResourceBasedOnTag", "Effect":"Deny", "Action":"organizations:CreateAccount", "Resource":"*", "Condition":{ "StringEquals":{ "aws:ResourceTag/key":"value" } } } ] }

ユーザー、グループ、ロール、アクセス許可の詳細については、「IAM ユーザーガイド」の「IAM identities (users, user groups, and roles)」を参照してください。

リソースベースのポリシー

Amazon S3 などの一部のサービスでは、リソースベースのアクセス許可ポリシーもサポートされています。例えば、ポリシーを Amazon S3 バケットにアタッチして、そのバケットに対するアクセス許可を管理できます。AWS Organizations では現在、リソースベースのポリシーはサポートされていません。

ポリシー要素の指定: アクション、条件、効果、リソース

AWS Organizations リソース については、サービスは、一連の API オペレーション、またはアクションを定義し、何らかの形でリソースと相互作用するか、リソースを操作します。これらのオペレーションを実行するためのアクセス権限を付与するために、AWS Organizations ではポリシーに一連のアクションを定義できます。例えば、OU リソースの場合は、AWS Organizations によって次のようなアクションが定義されています。

  • AttachPolicy および DetachPolicy

  • CreateOrganizationalUnit および DeleteOrganizationalUnit

  • ListOrganizationalUnits および DescribeOrganizationalUnit

場合によっては、API オペレーションを実行する際、アクションまたはリソースのアクセス許可が 2 つ以上必要になることがあります。

IAM アクセス許可ポリシーで使用できる最もベーシックなポリシーは、次のとおりです。

  • Action - このキーワードを使用して、許可または拒否するオペレーション (アクション) を識別します。例えば、指定した Effect に応じて、organizations:CreateAccount では、AWS Organizations の CreateAccount オペレーションを実行するユーザーのアクセス権限を許可または拒否します。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素 Action」を参照してください。

  • Resource - このキーワードを使用して、ポリシー構文が適用されるリソースの ARN を指定します。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素 Resource」を参照してください。

  • Condition - ポリシーステートメントを満たす必要がある条件を指定するために、このキーワードを使用します。Condition は通常、ポリシーが一致するために満たす必要がある追加条件を指定します。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素: 条件」を参照してください。

  • Effect - このキーワードを使用して、ポリシー構文でリソースのアクションを許可または拒否するかどうかを指定します。リソースへのアクセス権を明示的に付与 (または許可) していない場合、アクセスは暗黙的に拒否されます。また、リソースへのアクセスを明示的に拒否することもできます。これにより、別のポリシーによってアクセスが許可されていても、ユーザーは、指定のリソースで指定のアクションを実行できないことがあります。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素 Effect」を参照してください。

  • Principal - アイデンティティベースのポリシー (IAM ポリシー) では、ポリシーがアタッチされているユーザーが自動的かつ暗黙的にプリンシパルとなります。リソースベースのポリシーでは、権限 (リソースベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。現在、AWS Organizations では、アイデンティティベースのポリシーのみサポートしており、リソースベースのポリシーはサポートしていません。

IAM ポリシーの構文と記述の詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシーリファレンス」を参照してください。