View a markdown version of this page

Funções de serviço para AWS HealthOmics - AWS HealthOmics

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Funções de serviço para AWS HealthOmics

Uma função de serviço é uma função AWS Identity and Access Management (IAM) que concede permissões para que um AWS serviço acesse recursos em sua conta. Você fornece uma função de serviço AWS HealthOmics quando inicia um trabalho de importação ou inicia uma execução.

O HealthOmics console pode criar a função necessária para você. Se você usa a HealthOmics API para gerenciar recursos, crie a função de serviço usando o console do IAM. Para obter mais informações, consulte Criar uma função para delegar permissões a um AWS service (Serviço da AWS).

As funções de serviço devem ter a seguinte política de confiança.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

A política de confiança permite que o HealthOmics serviço assuma a função.

Exemplo de políticas de serviço do IAM

Nesses exemplos, nomes de recursos e IDs de contas são espaços reservados para você substituir por valores reais.

O exemplo a seguir mostra a política de uma função de serviço que você pode usar para iniciar uma execução. A política concede permissões para acessar o local de saída do Amazon S3, o grupo de logs do fluxo de trabalho e o contêiner do Amazon ECR para a execução.

nota

Se você estiver usando o cache de chamadas para a execução, adicione a localização do cache de execução do Amazon S3 como um recurso nas permissões do s3.

exemplo Política de função de serviço para iniciar uma execução
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Effect": "Allow", "Action": [ "logs:DescribeLogStreams", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/omics/WorkflowLog:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/omics/WorkflowLog:*" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability" ], "Resource": [ "arn:aws:ecr:us-east-1:123456789012:repository/*" ] } ] }

O exemplo a seguir mostra a política de uma função de serviço que você pode usar para um trabalho de importação de loja. A política concede permissões para acessar o local de entrada do Amazon S3.

exemplo Função de serviço para trabalho na loja de referência
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }

O exemplo a seguir mostra a política de uma função de serviço que publica métricas de execução em. CloudWatch Para obter mais informações, consulte Execute métricas para fluxos de trabalho privados.

exemplo Política de função de serviço para métricas de execução
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ] }

Use políticas de sessão para reduzir as permissões

Você pode usar políticas de sessão para restringir ainda mais as permissões concedidas por uma função de serviço para execuções de fluxo de trabalho individuais. As políticas de sessão são políticas de IAM em linha que você fornece ao iniciar uma execução. As permissões efetivas para a execução são a interseção entre as permissões da função de serviço e a política da sessão.

As políticas de sessão são úteis quando você deseja:

  • Conceda acesso temporário a buckets ou objetos específicos do Amazon S3 para uma única execução

  • Restrinja o acesso a recursos confidenciais por execução

  • Aplique controles de segurança adicionais sem modificar a função de serviço

Importante

As políticas de sessão só podem restringir as permissões; elas não podem conceder permissões além do que a função de serviço já permite. A política da sessão deve incluir permissões para o Amazon CloudWatch Logs (logs:CreateLogStreamandlogs:PutLogEvents) porque HealthOmics usa as credenciais da execução para criar e gravar em grupos de logs.

As políticas de sessão têm um tamanho máximo de 2.048 caracteres e devem ser documentos JSON válidos. Para obter mais informações sobre políticas de sessão, consulte Políticas de sessão no Guia do usuário do IAM.

exemplo Política de sessão para a execução de um fluxo de trabalho

O exemplo a seguir mostra uma política de sessão que restringe uma execução para acessar somente um prefixo específico do Amazon S3 para saída e exige CloudWatch permissões de registros:

{ "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:*" } ] }

Você pode especificar uma política de sessão ao iniciar uma execução usando a HealthOmics API. A StartRun API inclui um sessionPolicy parâmetro em que você fornece a política embutida como uma string JSON. Para execuções em lote, você pode especificar uma política de sessão no DefaultRunSetting que se aplica a todas as execuções no lote.

Exemplo CloudFormation modelo

O CloudFormation modelo de exemplo a seguir cria uma função de serviço que dá HealthOmics permissão para acessar buckets do Amazon S3 com omics- nomes prefixados e para fazer upload de registros de fluxo de trabalho.

exemplo Permissões de repositório de referência, Amazon S3 e CloudWatch Logs
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" ] } } ] }