View a markdown version of this page

Rôles de service pour AWS HealthOmics - AWS HealthOmics

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Rôles de service pour AWS HealthOmics

Un rôle de service est un rôle Gestion des identités et des accès AWS (IAM) qui autorise un AWS service à accéder aux ressources de votre compte. Vous attribuez un rôle de service AWS HealthOmics lorsque vous démarrez une tâche d'importation ou que vous démarrez une exécution.

La HealthOmics console peut créer le rôle requis pour vous. Si vous utilisez l' HealthOmics API pour gérer les ressources, créez le rôle de service à l'aide de la console IAM. Pour plus d'informations, voir Créer un rôle pour déléguer des autorisations à un Service AWS.

Les rôles de service doivent respecter la politique de confiance suivante.

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

La politique de confiance permet au HealthOmics service d'assumer ce rôle.

Exemples de politiques de service IAM

Dans ces exemples, les noms de ressources et les ID de compte sont des espaces réservés que vous devez remplacer par des valeurs réelles.

L'exemple suivant montre la politique relative à un rôle de service que vous pouvez utiliser pour démarrer une exécution. La politique accorde des autorisations d'accès à l'emplacement de sortie d'Amazon S3, au groupe de journaux de flux de travail et au conteneur Amazon ECR pour l'exécution.

Note

Si vous utilisez la mise en cache des appels pour l'exécution, ajoutez l'emplacement Amazon S3 du cache d'exécution en tant que ressource dans les autorisations s3.

Exemple Politique de rôle de service pour démarrer une exécution
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/*" ] } ] }

L'exemple suivant montre la politique relative à un rôle de service que vous pouvez utiliser pour une tâche d'importation en magasin. La politique accorde des autorisations pour accéder à l'emplacement d'entrée d'Amazon S3.

Exemple Rôle de service pour le poste de Reference Store
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" ] } ] }

L'exemple suivant montre la politique applicable à un rôle de service qui publie des métriques d'exécution à CloudWatch. Pour plus d’informations, consultez Exécutez des métriques pour les flux de travail privés.

Exemple Politique de rôle de service pour les métriques d'exécution
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ] }

Utilisez les politiques de session pour limiter les autorisations

Vous pouvez utiliser des politiques de session pour restreindre davantage les autorisations accordées par un rôle de service pour des exécutions de flux de travail individuelles. Les politiques de session sont des politiques IAM en ligne que vous fournissez lorsque vous démarrez une exécution. Les autorisations effectives pour l'exécution se situent à l'intersection des autorisations du rôle de service et de la politique de session.

Les politiques de session sont utiles lorsque vous souhaitez :

  • Accorder un accès temporaire à des compartiments ou à des objets Amazon S3 spécifiques pour une seule exécution

  • Restreindre l'accès aux ressources sensibles au cas par cas

  • Appliquez des contrôles de sécurité supplémentaires sans modifier le rôle de service

Important

Les politiques de session ne peuvent que restreindre les autorisations ; elles ne peuvent pas accorder d'autorisations au-delà de ce que le rôle de service autorise déjà. La politique de session doit inclure des autorisations pour Amazon CloudWatch Logs (logs:CreateLogStreametlogs:PutLogEvents) car elle HealthOmics utilise les informations d'identification de l'exécution pour créer des groupes de journaux et y écrire.

Les politiques de session ont une longueur maximale de 2 048 caractères et doivent être des documents JSON valides. Pour plus d'informations sur les politiques de session, consultez la section Politiques de session dans le Guide de l'utilisateur IAM.

Exemple Politique de session pour l'exécution d'un flux de travail

L'exemple suivant montre une politique de session qui restreint l'accès à un préfixe Amazon S3 spécifique pour la sortie lors d'une exécution et qui nécessite des autorisations de CloudWatch journalisation :

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

Vous pouvez spécifier une politique de session lorsque vous démarrez une exécution à l'aide de l' HealthOmics API. L'StartRunAPI inclut un sessionPolicy paramètre dans lequel vous fournissez la politique en ligne sous forme de chaîne JSON. Pour les exécutions par lots, vous pouvez spécifier une politique de session DefaultRunSetting qui s'applique à toutes les exécutions du lot.

Exemple CloudFormation modèle

L'exemple de CloudFormation modèle suivant crée un rôle de service qui donne HealthOmics l'autorisation d'accéder aux compartiments Amazon S3 dont le nom est préfixé paromics-, et de télécharger des journaux de flux de travail.

Exemple Autorisations relatives au magasin de référence, à Amazon S3 et CloudWatch aux journaux
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" ] } } ] }