Spécification des autorisations pour les applications exécutées sur EC2 des instances - AWS OpsWorks

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.

Spécification des autorisations pour les applications exécutées sur EC2 des instances

Important

Le AWS OpsWorks Stacks service a atteint sa fin de vie le 26 mai 2024 et a été désactivé tant pour les nouveaux clients que pour les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez l' AWS Support équipe sur AWS Re:Post ou via le AWS Support Premium.

Si les applications exécutées sur les EC2 instances Amazon de votre stack ont besoin d'accéder à d'autres AWS ressources, telles que des compartiments Amazon S3, elles doivent disposer des autorisations appropriées. Pour attribuer ces autorisations, vous utilisez un profil d'instance. Vous pouvez spécifier un profil d'instance pour chaque instance lorsque vous créez une pile AWS OpsWorks Stacks.

Option Advanced de la page Add Stack.

Vous pouvez également spécifier un profil pour les instances d'une couche en modifiant la configuration de la couche.

Le profil d'instance spécifie un IAM rôle. Les applications exécutées sur l'instance peuvent assumer ce rôle pour accéder aux AWS ressources, sous réserve des autorisations accordées par la politique du rôle. Pour plus d'informations sur la façon dont une application assume un rôle, voir Assumer le rôle à l'aide d'un API appel.

Vous pouvez créer un profil d'instance de différentes façons :

Un profil d'instance doit être associé à une relation de confiance et à une politique qui accorde des autorisations d'accès aux AWS ressources.

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

Le profil d'instance doit avoir cette relation de confiance pour que AWS OpsWorks Stacks puisse agir en votre nom. Si vous utilisez le rôle de service par défaut, ne modifiez pas la relation d'approbation. Si vous créez un rôle de service personnalisé, spécifiez la relation d'approbation comme suit :

  • Si vous utilisez l'assistant de création de rôle dans la IAMconsole, spécifiez le type de EC2 rôle Amazon sous Rôles de AWS service sur la deuxième page de l'assistant.

  • Si vous utilisez un AWS CloudFormation modèle, vous pouvez ajouter quelque chose comme ce qui suit à la section Ressources de votre modèle.

    "Resources": { "OpsWorksEC2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksEC2Role" } ] } } }

Lorsque vous créez votre profil d'instance, vous pouvez associer une politique appropriée au rôle du profil à ce moment-là. Après avoir créé la pile, vous devez utiliser la IAMconsole ou API associer une politique appropriée au rôle du profil. Par exemple, la politique suivante accorde un accès complet à tous les objets du compartiment Amazon S3 nommé amzn-s3-demo-bucket. Remplacez region et amzn-s3-demo-bucket avec des valeurs adaptées à votre configuration.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:region::amzn-s3-demo-bucket/*" } ] }

Pour obtenir un exemple de la façon de créer et d'utiliser un profil d'instance, consultez Utilisation d'un compartiment Amazon S3.

Si votre application utilise un profil d'instance pour appeler les AWS OpsWorks Stacks API depuis une EC2 instance, la politique doit autoriser l'iam:PassRoleaction en plus des actions appropriées pour les AWS OpsWorks Stacks et les autres AWS services. L'autorisation iam:PassRole permet à AWS OpsWorks Stacks d'assumer le rôle de service en votre nom. Pour plus d'informations sur les AWS OpsWorks StacksAPI, consultez la section AWS OpsWorks APIRéférence.

Voici un exemple de IAM politique qui vous permet d'appeler n'importe quelle action AWS OpsWorks Stacks depuis une EC2 instance, ainsi que toute action Amazon EC2 ou Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "s3:*", "opsworks:*", "iam:PassRole" ], "Resource": "arn:aws:ec2:region:account_id:instance/*", "Condition": { "StringEquals": { "iam:PassedToService": "opsworks.amazonaws.com" } } } ] }
Note

Si vous ne l'autorisez pasiam:PassRole, toute tentative d'appel d'une action AWS OpsWorks Stacks échoue avec une erreur comme celle-ci :

User: arn:aws:sts::123456789012:federated-user/Bob is not authorized to perform: iam:PassRole on resource: arn:aws:sts::123456789012:role/OpsWorksStackIamRole

Pour plus d'informations sur l'utilisation des rôles sur une EC2 instance pour obtenir des autorisations, consultez la section Accorder l'accès aux AWS ressources aux applications exécutées sur des EC2 instances Amazon dans le guide de AWS Identity and Access Management l'utilisateur.