Amazon ECR 許可 - AWS HealthOmics

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECR 許可

在 HealthOmics 服務從您的私有 Amazon ECR 儲存庫在容器中執行工作流程之前,您可以為儲存庫建立資源政策。政策會授予 HealthOmics 服務使用容器的許可。您可以將此資源政策新增至工作流程參考的每個私有儲存庫。

注意

私有儲存庫和工作流程必須位於相同的區域。

如果不同的 AWS 帳戶擁有工作流程和儲存庫,您需要設定跨帳戶許可。

您不需要為共用工作流程授予其他儲存庫存取權。不過,您可以建立允許或拒絕特定工作流程存取容器映像的政策。

若要使用 Amazon ECR 提取快取功能,您需要建立登錄檔許可政策。

下列各節說明如何設定這些案例的 Amazon ECR 資源許可。如需 Amazon ECR 中許可的詳細資訊,請參閱 Amazon ECR 中的私有登錄檔許可

為 Amazon ECR 儲存庫建立資源政策

建立資源政策,以允許 HealthOmics 服務使用儲存庫中的容器執行工作流程。此政策會授予 HealthOmics 服務主體存取所需 Amazon ECR 動作的許可。

請依照下列步驟建立政策:

  1. 在 Amazon ECR 主控台中開啟私有儲存庫頁面,然後選取您要授予存取權的儲存庫。

  2. 從側邊列導覽中,選取許可

  3. 選擇編輯

  4. 選擇編輯政策 JSON

  5. 新增下列政策陳述式,然後選取儲存

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "omics workflow access", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*" } ] }

使用跨帳戶容器執行工作流程

如果不同的 AWS 帳戶擁有工作流程和容器,您需要設定下列跨帳戶許可:

  1. 更新儲存庫的 Amazon ECR 政策,將許可明確授予擁有工作流程的帳戶。

  2. 更新擁有工作流程之帳戶的 服務角色,以授予其對容器映像的存取權。

下列範例示範 Amazon ECR 資源政策,該政策會將存取權授予擁有工作流程的帳戶。

在此範例中:

  • 工作流程帳戶 ID:111122223333

  • 容器儲存庫帳戶 ID:444455556666

  • 容器名稱:samtools

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "Sid": "AllowAccessToTheServiceRoleOfTheAccountThatOwnsTheWorkflow", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/DemoCustomer" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

若要完成設定,請將下列政策陳述式新增至擁有工作流程的帳戶的服務角色。此政策授予服務角色存取「samtools」容器映像的許可。請務必使用您自己的值取代帳戶號碼、容器名稱和區域。

{ "Sid": "CrossAccountEcrRepoPolicy", "Effect": "Allow", "Action": ["ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer"], "Resource": "arn:aws:ecr:us-west-2:444455556666:repository/samtools" }

共用工作流程的 Amazon ECR 政策

注意

HealthOmics 會自動允許共用工作流程存取工作流程擁有者帳戶中的 Amazon ECR 儲存庫,而工作流程是在訂閱者的帳戶中執行。您不需要為共用工作流程授予其他儲存庫存取權。如需詳細資訊,請參閱共用 HealthOmics 工作流程

根據預設,訂閱者無法存取 Amazon ECR 儲存庫來使用基礎容器。或者,您可以將條件索引鍵新增至儲存庫的資源政策,以自訂對 Amazon ECR 儲存庫的存取。以下各節提供範例政策。

限制對特定工作流程的存取

您可以在條件陳述式中列出個別工作流程,因此只有這些工作流程可以使用儲存庫中的容器。SourceArn 條件金鑰指定共用工作流程的 ARN。下列範例會授予指定工作流程使用此儲存庫的許可。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:omics:us-east-1:111122223333:workflow/1234567" } } } ] }

限制對特定帳戶的存取

您可以在條件陳述式中列出訂閱者帳戶,以便只有這些帳戶具有在儲存庫中使用容器的許可。SourceAccount 條件索引鍵會指定訂閱 AWS 帳戶 者的 。下列範例會授予指定帳戶使用此儲存庫的許可。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

您也可以拒絕特定訂閱者的 Amazon ECR 許可,如下列範例政策所示。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:SourceAccount": "111122223333" } } } ] }

Amazon ECR 提取快取的政策

若要使用 Amazon ECR 提取快取,您可以建立登錄檔許可政策。您也可以建立儲存庫建立範本,定義 Amazon ECR 提取快取所建立儲存庫的許可。

下列各節包含這些政策的範例。如需提取快取的詳細資訊,請參閱《Amazon Elastic Container Registry 使用者指南》中的將上游登錄與 Amazon ECR 私有登錄同步

登錄檔許可政策

若要使用 Amazon ECR 提取快取,請建立登錄檔許可政策。登錄檔許可政策提供對複寫的控制,並提取快取許可。

對於跨帳戶複寫,您必須明確允許每個 AWS 帳戶 可以將其儲存庫複寫到您的登錄檔。

根據預設,當您建立提取快取規則時,具有從私有登錄檔提取映像許可的任何 IAM 主體也可以使用提取快取規則。您可以使用登錄檔許可,進一步將這些許可的範圍限縮於特定儲存庫。

將登錄檔許可政策新增至擁有容器映像的帳戶。

在下列範例中,政策允許 HealthOmics 服務為每個上游登錄檔建立儲存庫,並從建立的儲存庫啟動上游提取請求。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPTCinRegPermissions", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage" ], "Resource": [ "arn:aws:ecr:us-east-1:123456789012:repository/ecr-public/*", "arn:aws:ecr:us-east-1:123456789012:repository/docker-hub/*" ] } ] }

儲存庫建立範本

若要在 HealthOmics 中使用提取快取,Amazon ECR 儲存庫必須具有儲存庫建立範本。範本會定義為上游登錄檔建立之私有儲存庫的組態設定。

每個範本都包含儲存庫命名空間字首,Amazon ECR 會使用此字首將新儲存庫與特定範本比對。範本可以指定所有儲存庫設定的組態,包括資源型存取政策、標籤不變性、加密和生命週期政策。如需詳細資訊,請參閱《Amazon Elastic Container Registry 使用者指南》中的儲存庫建立範本

在下列範例中, 政策允許 HealthOmics 服務從上游儲存庫啟動上游提取請求。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "PTCRepoCreationTemplate", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

跨帳戶 Amazon ECR 存取的政策

對於跨帳戶存取,私有儲存庫的擁有者會更新登錄許可政策和儲存庫建立範本,以允許其他帳戶和該帳戶的執行角色存取。

在登錄許可政策中,新增政策陳述式,以允許其他帳戶的執行角色存取 Amazon ECR 動作:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountPTCinRegPermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/RUN_ROLE"}, "Action": [ "ecr:CreateRepository", "ecr:BatchGetImage", "ecr:BatchImportUpstreamImage" ], "Resource": "arn:aws:ecr:us-east-1:123456789012:repository/path/*" } ] }

在儲存庫建立範本中,新增政策陳述式,以允許其他帳戶的執行角色存取新的容器映像。或者,您可以新增條件陳述式來限制對特定工作流程的存取:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountPTCinRepoCreationTemplate", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RUN_ROLE"}, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:omics:us-east-1:444455556666:workflow/WORKFLOW_ID", "aws:SourceAccount": "111122223333" } } } ] }

在執行角色中新增兩個額外動作 (CreateRepository 和 BatchImportUpstreamImage) 的許可,並指定執行角色可存取的資源。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountPTCRunRolePolicy", "Effect": "Allow", "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:123456789012::repository/{path}/*" } ] }