本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
的服务角色 AWS HealthOmics
服务角色是一个 AWS Identity and Access Management (IAM) 角色,它向 AWS 服务授予访问您账户中资源的权限。您在启动导入任务或开始运行 AWS HealthOmics 时向其提供服务角色。
HealthOmics 控制台可以为您创建所需的角色。如果您使用 HealthOmics API 管理资源,请使用 IAM 控制台创建服务角色。有关更多信息,请参阅创建向委派权限的角色 AWS 服务。
服务角色必须具有以下信任策略。
信任策略允许该 HealthOmics 服务代入该角色。
IAM 服务策略示例
在这些示例中,资源名称和账户 ID 是占位符,您可以将其替换为实际值。
以下示例显示了可用于开始运行的服务角色的策略。该策略授予访问运行 Amazon S3 输出位置、工作流程日志组和 Amazon ECR 容器的权限。
注意
如果您使用调用缓存进行运行,请将运行缓存 Amazon S3 位置作为资源添加到 s3 权限中。
例用于开始运行的服务角色策略
以下示例显示了可用于商店导入任务的服务角色的策略。该策略授予访问 Amazon S3 输入位置的权限。
例参考商店任务的服务角色
以下示例显示了向发布运行指标的服务角色的策略 CloudWatch。有关更多信息,请参阅 运行私有工作流程的指标。
例运行指标的服务角色策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ] }
使用会话策略缩小权限范围
您可以使用会话策略进一步限制服务角色为单个工作流程运行授予的权限。会话策略是您在开始运行时提供的内联 IAM 策略。运行的有效权限是服务角色的权限和会话策略的交叉点。
当你想做以下事情时,会话策略很有用:
-
为单次运行授予对特定 Amazon S3 存储桶或对象的临时访问权限
-
在每次运行的基础上限制对敏感资源的访问
-
在不修改服务角色的情况下应用其他安全控制
重要
会话策略只能限制权限;它们不能授予超出服务角色已允许的权限。会话策略必须包括 Amazon L CloudWatch ogs(logs:CreateLogStream和logs:PutLogEvents)的权限,因为 HealthOmics 使用运行的凭证来创建和写入日志组。
会话策略的最大长度为 2,048 个字符,并且必须是有效的 JSON 文档。有关会话策略的更多信息,请参阅 IAM 用户指南中的会话策略。
例工作流程运行的会话策略
以下示例显示了一个会话策略,该策略将运行限制为仅访问特定的 Amazon S3 前缀以获取输出,并且需要 CloudWatch 日志权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::my-bucket/workflow-outputs/run-123/*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/omics/WorkflowLog:*" } ] }
在使用 HealthOmics API 开始运行时,您可以指定会话策略。StartRunAPI 包含一个sessionPolicy参数,您可以在其中以 JSON 字符串的形式提供内联策略。对于批量运行,可以在中指定适用于批处理DefaultRunSetting中所有运行的会话策略。
示例 CloudFormation 模板
以下示例 CloudFormation 模板创建了一个服务角色,该角色 HealthOmics 授予访问名称前缀的 Amazon S3 存储桶的权限omics-,以及上传工作流程日志的权限。
例参考存储、Amazon S3 和 CloudWatch 日志权限
Parameters: bucketName: Description: Bucket name Type: String Resources: serviceRole: Type: AWS::IAM::Role Properties: Policies: - PolicyName: read-reference PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - omics:* Resource: !Sub arn:${AWS::Partition}:omics:${AWS::Region}:${AWS::AccountId}:referenceStore/* - PolicyName: read-s3 PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - s3:ListBucket Resource: !Sub arn:${AWS::Partition}:s3:::${bucketName} - Effect: Allow Action: - s3:GetObject - s3:PutObject Resource: !Sub arn:${AWS::Partition}:s3:::${bucketName}/* - PolicyName: upload-logs PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - logs:DescribeLogStreams - logs:CreateLogStream - logs:PutLogEvents Resource: !Sub arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:loggroup:/aws/omics/WorkflowLog:log-stream:* - Effect: Allow Action: - logs:CreateLogGroup Resource: !Sub arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:loggroup:/aws/omics/WorkflowLog:* AssumeRolePolicyDocument: | { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "omics.amazonaws.com" ] } } ] }