AMI を特定の組織または組織単位と共有する - Amazon Elastic Compute Cloud

AMI を特定の組織または組織単位と共有する

AWS Organizations は、作成し一元管理する組織に、複数の AWS アカウント を統合するためのアカウント管理サービスです。AMI は、特定のアカウントと共有するだけでなく、組織または組織単位 (OU) と共有することもできます。

組織とは、AWS アカウント を統合して一元管理するために作成するエンティティのことです。アカウントを階層ツリーのような構造に編成して、ルートを最上部に置いて組織単位をその組織ルート下にネストすることができます。各アカウントは、ルートに直接追加するか、階層内の OU のいずれかに配置することができます。詳細については、「AWS Organizations ユーザーガイド」の「AWS 組織の用語およびコンセプト」を参照してください。

AMI を組織または OU と共有すると、すべての子アカウントが AMI にアクセスできます。例えば、次の図では、AMI は最上位レベルの OU と共有されています (1 の数字の矢印で示されます)。その最上位レベルの OU の下にネストされているすべての OU やアカウント (2 の数字の点線で示したもの) も AMI にアクセスできます。点線の外側にある組織や OU (数字の 3 で示されている) のアカウントは、AMI が共有されている OU の子供ではないため、AMI へのアクセス権はありません。


				AMI は OU と共有され、すべての子 OU とアカウントが AMI にアクセスできます。

考慮事項

特定の組織または組織単位で AMI を共有する場合は、以下について検討してください。

  • 所有権 — AMI を共有するには、お客様の AWS アカウント がその AMI を所有している必要があります。

  • 共有制限 — AMI の所有者は、メンバーではない組織や OU を含め、任意の組織または OU と AMI を共有できます。

    リージョン内で AMI を共有できるエンティティの最大数については、「Amazon EC2 Service Quotas」をご覧ください。

  • タグ - ユーザー定義タグ (AMI にアタッチするタグ) は共有できません。AMI を共有する場合、ユーザー定義タグは AMI が共有されている組織または OU のどの AWS アカウント にも使用できません。

  • ARN 形式 — コマンドで組織または OU を指定する場合は、正しい ARN 形式を必ず使用してください。ID のみを指定するとエラーになります。例えば、o-123exampleou-1234-5example を指定するとエラーになります。

    正しい ARN 形式:

    • 組織の ARN: arn:aws:organizations::account-id:organization/organization-id

    • OU ARN: arn:aws:organizations::account-id:ou/organization-id/ou-id

    コードの説明は以下のとおりです。

    • account-id は 12 桁の管理アカウント番号で、例えば、123456789012 となります。管理アカウント番号がわからない場合は、管理アカウント番号を含む ARN を取得するための組織または組織単位を記述できます。詳細については、ARN を入手する を参照してください。

    • organization-id は組織 ID であり、例えば、o-123example となります。

    • ou-id は組織単位 ID であり、例えば、ou-1234-5example となります。

    ARN の形式の詳細については、「IAM ユーザーガイド」の「Amazon リソースネーム (ARN)」を参照してください。

  • 暗号化とキー — 暗号化されていないスナップショットと暗号化されたスナップショットによってバックアップされた AMI を共有できます。

    • 暗号化されたスナップショットは、カスタマーマネージド型キーを使用して暗号化する必要があります。デフォルトの AWS マネージドキーで暗号化されたスナップショットでバックアップされた AMI を共有することはできません。

    • 暗号化されたスナップショットによってバックアップされた AMI を共有する場合、スナップショットの暗号化に使用されたカスタマーマネージドキーの使用を組織または OU に許可する必要があります。詳細については、組織と OU に KMS キーの使用を許可する をご参照ください。

  • リージョン – AMI はリージョンのリソースです。共有した AMI は、共有したリージョンでのみ使用できます。AMI を他のリージョンで利用できるようにするには、AMI をそのリージョンにコピーし、共有します。詳細については、AMI のコピー を参照してください。

  • 使用 — AMI を共有する場合、ユーザーは AMI からのインスタンスのみを起動できます。AMI はそれを削除、共有、または変更することはできません。ただし、AMI を使用してインスタンスを起動した後は、起動したインスタンスから AMI を作成できます。

  • 請求 — 他の AWS アカウント がお客様の AMI を使用してインスタンスを起動しても、お客様には請求されません。AMI を使用してインスタンスを起動するアカウントには、起動するインスタンスに対して請求されます。

組織と OU に KMS キーの使用を許可する

暗号化されたスナップショットによってバックアップされた AMI を共有する場合、組織または OU がスナップショットの暗号化に使用された AWS KMS keys の使用を許可する必要もあります。

aws:PrincipalOrgID および aws:PrincipalOrgPaths キーを使用して、リクエストを行っているプリンシパルの AWS Organizations パスをポリシー内のパスと比較します。そのプリンシパルは、ユーザー、IAM ロール、フェデレーションユーザー、または AWS アカウント ルートユーザーです。ポリシーでは、この条件キーによって、リクエスタが AWS Organizations で指定された組織ルートまたは OU 内のアカウントメンバーであることが保証されます。その他の条件ステートメントの例については、「IAM ユーザーガイド」の「aws:PrincipalOrgID」と「aws:PrincipalOrgPaths」を参照してください。

キーポリシーの編集の詳細については、「AWS Key Management Service 開発者ガイド」の「他のアカウントのユーザーに KMS キーの使用を許可する」を参照してください。

組織または OU に KMS キーを使用するアクセス権限を付与するには、次のステートメントをキーポリシーに追加します。

{ "Sid": "Allow access for organization root", "Effect": "Allow", "Principal": "*", "Action": [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-123example" } } }

KMS キーを複数の OU と共有するには、次の例のようなポリシーを使用します。

{ "Sid": "Allow access for specific OUs and their descendants", "Effect": "Allow", "Principal": "*", "Action": [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-123example" }, "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-123example/r-ab12/ou-ab12-33333333/*", "o-123example/r-ab12/ou-ab12-22222222/*" ] } } }

AMI の共有

Amazon EC2 コンソールまたは AWS CLI を使用して AMI を組織または OU と共有できます。

AMI の共有 (コンソール)

コンソールを使用して AMI を組織または OU と共有するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [AMI] を選択します。

  3. リストで AMI を選択し、[Actions] (アクション) から [Edit AMI permissions] (AMI 権限の編集) を選択します。

  4. [AMI availability] (AMI の利用状況) で、[Private] (プライベート) を選択します。

  5. [Shared organizations/OUs] (共有組織/OU) の隣で、[Add organization/OU ARN] (組織/OU ARN を追加) を選択します。

  6. [Organization/OU ARN] (組織/OU ARN) で、AMI を共有する組織 ARN または OU ARN を入力し、[Share AMI] (AMI の共有) を選択します。ID だけでなく、完全な ARN を指定する必要があることに注意してください。

    この AMI を複数の組織または OU と共有するには、この手順を繰り返して、必要なすべての組織または OU を追加します。

    注記

    AMI を共有するために、AMI の参照先の Amazon EBS スナップショットを共有する必要はありません。共有する必要があるのは AMI 自体だけです。起動の際に、参照先の Amazon EBS スナップショットへのインスタンスアクセスが自動的に提供されます。ただし、AMI が参照するスナップショットを暗号化するために使用した KMS キーは共有する必要があります。詳細については、組織と OU に KMS キーの使用を許可する をご参照ください。

  7. 完了したら、[Save changes] (変更を保存) を選択します。

  8. (オプション) AMI を共有した組織または OU を表示するには、リストから AMI を選択し、[Permissions] (アクセス許可) タブをクリックし、[Shared organizations/OUs] (共有組織/OU) までスクロールします。共有されている AMI を見つけるには、「共有 AMI の検索」を参照してください。

AMI の共有 (AWS CLI)

AMI を共有するには、modify-image-attribute コマンド (AWS CLI) を使用します。

AWS CLI を使用して AMI を組織と共有するには

modify-image-attribute コマンドを使用すると、指定した組織に対し、指定した AMI の起動許可が与えられます。ID だけでなく、完全な ARN を指定する必要があることに注意してください。

aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Add=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-123example}]"
AWS CLI を使用して AMI を OU と共有するには

[modify-image-attribute] コマンドを使用すると、指定した OU に対し、指定した AMI の起動許可が与えられます。ID だけでなく、完全な ARN を指定する必要があることに注意してください。

aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Add=[{OrganizationalUnitArn=arn:aws:organizations::123456789012:ou/o-123example/ou-1234-5example}]"
注記

AMI を共有するために、AMI の参照先の Amazon EBS スナップショットを共有する必要はありません。共有する必要があるのは AMI 自体だけです。起動の際に、参照先の Amazon EBS スナップショットへのインスタンスアクセスが自動的に提供されます。ただし、AMI が参照するスナップショットを暗号化するために使用した KMS キーは共有する必要があります。詳細については、組織と OU に KMS キーの使用を許可する をご参照ください。

AMI の共有を停止する

Amazon EC2 コンソールまたは AWS CLI を使用して AMI を組織または OU と共有することを停止できます。

AMI の共有を停止する (コンソール)

コンソールを使用して AMI を組織または OU と共有することを停止するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [AMI] を選択します。

  3. リストで AMI を選択し、[Actions] (アクション) から [Edit AMI permissions] (AMI 権限の編集) を選択します。

  4. [Shared organizations/OUs] (共有組織/OU) で、AMI の共有を停止する組織または OU を選択し、[Remove selected] (選択を削除) を選択します。

  5. 完了したら、[Save changes] (変更を保存) を選択します。

  6. (オプション) AMI の組織または OU との共有の停止を確認するには、リストから AMI を選択し、[Permissions] (アクセス許可) タブをクリックし、[Shared organizations/OUs] (共有組織/OU) までスクロールします。

AMI の共有を停止する (AWS CLI)

AMI の共有を停止するには、[modify-image-attribute] または [reset-image-attribute] コマンド (AWS CLI) を使用します。

AWS CLI を使用して AMI を組織または OU と共有することを停止するには

[modify-image-attribute] コマンドを使用すると、指定した組織から指定した AMI の起動許可が削除されます。ARN を指定する必要があることに注意してください。

aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Remove=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-123example}]"
AWS CLI を使用してすべての組織、OU、および AWS アカウント と AMI の共有を停止するには

reset-image-attribute コマンドを使用すると、指定した AMI からパブリック起動許可と明示的起動許可がすべて削除されます。AMI の所有者には常に起動許可が与えられるため、このコマンドの影響を受けないことにご注意ください。

aws ec2 reset-image-attribute \ --image-id ami-0abcdef1234567890 \ --attribute launchPermission
注記

AMI が共有されている組織または OU 内にある場合、特定のアカウントと AMI の共有を停止することはできません。アカウントの起動権限を削除して AMI の共有を停止しようとすると、Amazon EC2 は成功メッセージを返します。ただし、AMI は引き続きアカウントと共有されます。

AMI が共有されている組織と OU を表示する

Amazon EC2 コンソールまたは AWS CLI を使用して、AMI を共有した組織および OU を確認することができます。

AMI が共有されている組織と OU を表示する (コンソール)

コンソールを使用して AMI を共有した組織および OU を確認するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [AMI] を選択します。

  3. リストで AMI を選択し、[Permissions] (アクセス許可) タブをクリックし、[Shared organizations/OUs] (共有組織/OU) までスクロールします。

    共有されている AMI を見つけるには、「共有 AMI の検索」を参照してください。

AMI が共有されている組織と OU を表示する (AWS CLI)

どの組織や OU と AMI を共有しているかは、describe-image-attribute コマンド (AWS CLI) と launchPermission 属性で確認できます。

AWS CLI を使用して AMI を共有した組織および OU を確認するには

describe-image-attribute コマンドは、指定した AMI の launchPermission 属性を説明し、その AMI を共有している組織や OU を返します。

aws ec2 describe-image-attribute \ --image-id ami-0abcdef1234567890 \ --attribute launchPermission

レスポンスの例

{ "ImageId": "ami-0abcdef1234567890", "LaunchPermissions": [ { "OrganizationalUnitArn": "arn:aws:organizations::111122223333:ou/o-123example/ou-1234-5example" } ] }

ARN を入手する

組織と組織単位 ARN には、12 桁の管理アカウント番号が含まれています。管理アカウント番号がわからない場合は、組織と組織単位を記述して、それぞれの ARN を取得できます。以下の例では、123456789012 は管理アカウント番号です。

ARN を取得する前に、組織と組織単位を記述する権限が必要です。次のポリシーで、これらの権限が付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:Describe*" ], "Resource": "*" } ] }
組織の ARN を取得するには

組織の ARN だけを返すには、describe-organization コマンドを使用し、--query パラメータを 'Organization.Arn' に設定します。

aws organizations describe-organization --query 'Organization.Arn'

レスポンスの例

"arn:aws:organizations::123456789012:organization/o-123example"
組織単位の ARN を取得するには

組織単位の ARN だけを返すには、describe-organizational-unit コマンドを使用し、OU ID を指定し、--query パラメータを 'OrganizationalUnit.Arn' に設定します。

aws organizations describe-organizational-unit --organizational-unit-id ou-1234-5example --query 'OrganizationalUnit.Arn'

レスポンスの例

"arn:aws:organizations::123456789012:ou/o-123example/ou-1234-5example"