资源权限 - AWS HealthOmics

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

资源权限

AWS HealthOmics 当您运行任务或创建商店时,代表您创建和访问其他服务中的资源。在某些情况下,您需要在其他服务中配置访问资源或 HealthOmics 允许访问资源的权限。

Amazon ECR 权限

在该 HealthOmics 服务可以在您的私有 Amazon ECR 存储库的容器中运行工作流程之前,您需要为该容器创建资源策略。该策略授予 HealthOmics 服务使用容器的权限。您可以将此资源策略添加到工作流程引用的每个私有存储库中。

注意

私有存储库和工作流程必须位于同一区域。

以下各节描述了所需的策略配置。

为 Amazon ECR 存储库创建资源策略

创建资源策略以允许 HealthOmics 服务使用存储库中的容器运行工作流程。该政策允许 HealthOmics 服务主体访问所需的 Amazon ECR 操作。

按照以下步骤创建策略:

  1. 在 Amazon ECR 控制台中打开私有存储库页面,然后选择您要授予访问权限的存储库。

  2. 在侧栏导航中,选择 “权限”。

  3. 选择编辑 JSON

  4. 选择添加声明

  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" ] }, { "Sid": "allow access to the service role of the account that owns the workflow", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/DemoCustomer" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }

要完成设置,请向拥有该工作流程的账户的服务角色添加以下策略声明。该策略向服务角色授予访问 “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" } } } ] }

Lake Formation 权限

在中使用分析功能之前 HealthOmics,请在 Lake Formation 中配置默认数据库设置。

在 Lake Formation 中配置资源权限
  1. 在 Lake Formation 控制台中打开数据目录设置页面。

  2. 在新创建的数据库和表的默认权限下,取消选中数据库和表的 IAM 访问控制要求。

  3. 选择保存

HealthOmics 如果您的服务策略具有正确的 RAM 权限,Analytics auto 会自动接受数据,例如以下示例。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "omics:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ram:AcceptResourceShareInvitation", "ram:GetResourceShareInvitations" ], "Resource": "*" } ] }