與特定組織或組織單位共用 AMI - Amazon Elastic Compute Cloud

與特定組織或組織單位共用 AMI

AWS Organizations 是一項帳戶管理服務,可讓您將多個 AWS 帳戶 整合到您所建立和集中管理的組織中。除了與指定的帳戶共享 AMI 之外,您還可以與組織或您建立的組織單位 (OU) 共享 AMI。

組織是您建立來合併並集中管理 AWS 帳戶 的實體。您可以將帳戶組織為階層式、類似樹狀目錄的結構,其中的位於頂層,而組織單位在組織根下形成巢狀。每個帳戶都可以直接新增至根中,或放在階層中的其中一個 OU 中。如需帳戶類型的詳細資訊,請參閱 AWS Organizations 使用者指南中的 AWS Organizations 術語與概念

當您與組織或 OU 共用 AMI 時,所有子帳戶都可以存取 AMI。例如,在下圖中,與頂層 OU 共用 AMI (由編號 1 的箭頭表示)。在該頂層 OU 之下形成巢狀的所有 OU 和帳戶 (由編號 2 的虛線表示) 也可以存取 AMI。組織中的帳戶和虛線外的 OU (由編號 3 表示) 無法存取 AMI,因為它們不是與其共用 AMI 之 OU 的子項。


				與 OU 共用 AMI,而且所有子 OU 和帳戶都可以存取 AMI。

考量事項

與特定組織或組織單位共享 AMI 時,請考慮以下項目。

  • 擁有權 – 若要共用 AMI,您的 AWS 帳戶 必須擁有 AMI。

  • 共用限制 – AMI 擁有者可以與任何組織或 OU 共用 AMI,包括他們不是其成員的組織和 OU。

    如需可在區域內共用 AMI 的最大實體數量,請參閱 Amazon EC2 服務配額

  • 標籤 – 您無法共用使用者定義的標籤 (連接至 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 格式的詳細資訊,請參閱《AWS 一般參考》中的 Amazon Resource Name (ARN)

  • 加密和金鑰 – 您可以共用未加密和加密快照所支援的 AMI。

    • 加密快照必須透過客戶受管金鑰進行加密。您無法共用透過預設 AWS 受管金鑰加密之快照支援的 AMI。如需詳細資訊,請參閱 共享 Amazon EBS 快照

    • 如果您共用加密快照所支援的 AMI,則必須允許組織或 OU 使用客戶受管金鑰,而這些金鑰用來加密快照。如需更多詳細資訊,請參閱 允許組織和 OU 使用 KMS 金鑰

  • 區域 - AMI 是一種區域性的資源。共享 AMI 後,只能從共享 AMI 的區域中使用 AMI。若要讓 AMI 在其他區域可用,請將 AMI 複製到該區域,然後共用。如需更多詳細資訊,請參閱 複製 AMI

  • 使用 - 共享 AMI 後,使用者只能從 AMI 啟動執行個體。他們無法刪除、共用或修改它。不過,他們在使用您的 AMI 啟動了執行個體之後,就可以從其啟動的執行個體建立 AMI。

  • 計費 – 當其他 AWS 帳戶 使用您的 AMI 來啟動執行個體時,不會向您收取費用。使用 AMI 啟動執行個體的帳戶會根據它們啟動的執行個體計費。

允許組織和 OU 使用 KMS 金鑰

如果您共用加密快照所支援的 AMI,則亦須允許組織或 OU 使用已用來加密快照的 AWS KMS keys。

使用 aws:PrincipalOrgIDaws:PrincipalOrgPaths 金鑰來比較正在向政策中路徑提出請求之委託人的 AWS Organizations 路徑。該主體可以是使用者、IAM 角色、聯合身分使用者或 AWS 帳戶 根使用者。在政策中,此條件金鑰可確保申請者是 AWS Organizations 中所指定組織根或中 OU 內的帳戶成員。如需更多條件陳述式範例,請參閱《IAM 使用者指南》中的 aws:PrincipalOrgIDaws:PrincipalOrgPaths

如需編輯金鑰政策的相關資訊,請參閱 AWS Key Management Service 開發人員指南中的允許其他帳戶中的使用者使用 KMS 金鑰,以及 共用 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" } } }

若要與多個 OU 共用 KMS 金鑰,您可以使用類似下列範例的政策。

{ "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 與組織或 OU 共用 AMI。

共用 AMI (主控台)

使用主控台與組織或 OU 共用 AMI
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 AMIs (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)。請注意,您必須指定完整的 ARN,而不只是 ID。

    若要與多個組織或 OU 共用此 AMI,請重覆此步驟,直到新增所有需要的組織或 OU。

    注意

    共享 AMI 時,不需要共享 AMI 所參考的 Amazon EBS 快照。需要共用的只有 AMI 本身,而且系統可自動讓執行個體存取參考的 Amazon EBS 快照,以進行啟動。不過,您的確需要共用 KMS 金鑰,而這些金鑰用來加密 AMI 參考的快照。如需詳細資訊,請參閱 允許組織和 OU 使用 KMS 金鑰

  7. 完成後,請選擇 Save changes (儲存變更)。

  8. (選用) 若要查看與其共用 AMI 的組織或 OU,請從清單中選取 AMI,然後選取 Permissions (許可) 索引標籤,向下滾動至 Shared organizations/OUs (共用的組織/OU)。若要尋找與您共用的 AMI,請參閱尋找共享 AMI

共享 AMI (Tools for Windows PowerShell)

使用 Edit-EC2ImageAttribute 命令 (Tools for Windows PowerShell) 來共用 AMI,如下列範例所示。

與組織或 OU 共用 AMI

下列命令可將所指定 AMI 的啟動許可授予指定的組織。

PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType add -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"
注意

共享 AMI 時,不需要共享 AMI 所參考的 Amazon EBS 快照。需要共用的只有 AMI 本身,而且系統可自動讓執行個體存取參考的 Amazon EBS 快照,以進行啟動。不過,您的確需要共用 KMS 金鑰,而這些金鑰用來加密 AMI 參考的快照。如需詳細資訊,請參閱 允許組織和 OU 使用 KMS 金鑰

停止與組織或 OU 共用 AMI

下列命令可從指定的組織移除所指定 AMI 的啟動許可。

PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType remove -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"

若要停止與所有組織、OU 和 AWS 帳戶 共用 AMI

下列命令可從指定的 AMI 移除所有的公有和明確啟動許可。請注意,AMI 擁有者一律具備啟動許可,因此不受此命令影響。

PS C:\> Reset-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission

共用 AMI (AWS CLI)

使用 modify-image-attribute 命令 (AWS CLI) 來共用 AMI。

使用 AWS CLI 與組織共用 AMI

modify-image-attribute 命令可將所指定 AMI 的啟動許可授予給指定組織。請注意,您必須指定完整的 ARN,而不只是 ID。

aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Add=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-123example}]"
使用 AWS CLI 與 OU 共用 AMI

modify-image-attribute 命令可將所指定 AMI 的啟動許可授予指定的 OU。請注意,您必須指定完整的 ARN,而不只是 ID。

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 快照,以進行啟動。不過,您的確需要共用 KMS 金鑰,而這些金鑰用來加密 AMI 參考的快照。如需詳細資訊,請參閱 允許組織和 OU 使用 KMS 金鑰

停止共用 AMI

您可以使用 Amazon EC2 主控台或 AWS CLI 停止與組織或 OU 共用 AMI。

停止共用 AMI (主控台)

使用主控台停止與組織或 OU 共用 AMI
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 AMIs (AMI)。

  3. 在清單中選取您的 AMI,然後選取 Actions (動作)、Edit AMI permissions (編輯 AMI 許可)。

  4. Shared organizations/OUs (共用的組織/OU),選取要停止與其共用 AMI 的組織或 OU,然後選取 Remove Selected (移除所選項)。

  5. 完成後,請選擇 Save changes (儲存變更)。

  6. (選用) 若要確認您已停止與組織或 OU 共用 AMI,請從清單中選取此 AMI,然後選取Permissions (許可) 索引標籤,向下滾動至 Shared organizations/OUs (共用的組織/OU)。

停止共用 AMI (AWS CLI)

使用 modify-image-attributereset-image-attribute 命令 (AWS CLI) 來停止共用 AMI。

使用 AWS CLI 停止與組織或 OU 共用 AMI

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 檢查與哪些組織和 OU 共用 AMI。

查看與之共用 AMI 的組織和 OU (主控台)

使用主控台檢查已與哪些組織和 OU 共用 AMI
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 AMIs (AMI)。

  3. 從清單中選取 AMI,選取 Permissions (許可) 索引標籤,然後向下滾動至 Shared organizations/OUs (共用的組織/OU)。

    若要尋找與您共用的 AMI,請參閱尋找共享 AMI

查看與之共用 AMI 的組織和 OU (AWS CLI)

您可以使用 describe-image-attribute 命令 (AWS CLI) 和 launchPermission 屬性,檢查已與哪些組織和 OU 共用您的 AMI。

使用 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

使用 describe-organization 命令和設定為 'Organization.Arn'--query 參數,以只傳回組織 ARN。

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

回應範例

"arn:aws:organizations::123456789012:organization/o-123example"
取得組織單位的 ARN

使用 describe-organizational-unit 命令,指定 OU ID,並將 --query 參數設定為 'OrganizationalUnit.Arn',以只傳回組織單位 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"