Gestion des AWS SAM autorisations à l'aide de AWS CloudFormation mécanismes - AWS Serverless Application Model

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.

Gestion des AWS SAM autorisations à l'aide de AWS CloudFormation mécanismes

Pour contrôler l'accès aux AWS ressources, le AWS Serverless Application Model (AWS SAM) peut utiliser les mêmes mécanismes que AWS CloudFormation. Pour plus d’informations, consultez Contrôle de l’accès à l’aide de AWS Identity and Access Management dans le Guide de l’utilisateur AWS CloudFormation .

Il existe trois options principales pour accorder à un utilisateur l’autorisation de gérer des applications sans serveur. Chaque option offre aux utilisateurs différents niveaux de contrôle d’accès.

  • Accorder des autorisations d’administrateur

  • Joignez les politiques AWS gérées nécessaires.

  • Accordez des autorisations spécifiques AWS Identity and Access Management (IAM).

Selon l'option choisie, les utilisateurs ne peuvent gérer que les applications sans serveur contenant des AWS ressources auxquelles ils sont autorisés à accéder.

Les sections suivantes décrivent chaque option plus en détail.

Accorder des autorisations d’administrateur

Si vous accordez des autorisations d'administrateur à un utilisateur, celui-ci peut gérer des applications sans serveur contenant n'importe quelle combinaison de AWS ressources. C’est l’option la plus simple, mais elle accorde également aux utilisateurs l’ensemble d’autorisations le plus étendu, ce qui leur permet de réaliser des actions d’un impact le plus élevé.

Pour plus d’informations sur l’attribution d’autorisations d’administrateur à un utilisateur, consultez Création de votre premier utilisateur administrateur et groupe IAM dans le Guide de l’utilisateur IAM

Joindre les politiques AWS gérées nécessaires

Vous pouvez accorder aux utilisateurs un sous-ensemble d’autorisations en utilisant des stratégies gérées par AWS, plutôt que d’accorder des autorisations d’administrateur complètes. Si vous utilisez cette option, assurez-vous que l'ensemble de politiques AWS gérées couvre toutes les actions et ressources requises pour les applications sans serveur gérées par les utilisateurs.

Par exemple, les politiques AWS gérées suivantes sont suffisantes pour déployer l'exemple d'application Hello World :

  • AWSCloudFormationFullAccess

  • IAMFullAccès

  • AWSLambda_FullAccess

  • APIGatewayAdministrateur Amazon

  • Amazon S3 FullAccess

  • Amazon EC2 ContainerRegistryFullAccess

Pour plus d’informations sur l’attachement de stratégies à un utilisateur IAM, consultez Modification des autorisations d’un utilisateur IAM dans le Guide de l’utilisateur IAM.

Accorder des autorisations (IAM) spécifiques.

Pour un niveau de contrôle d’accès plus détaillé, vous pouvez accorder des autorisations IAM spécifiques aux utilisateurs à l’aide des déclarations de stratégie. Si vous utilisez cette option, assurez-vous que la déclaration de stratégie comprenne toutes les actions et ressources requises pour les applications sans serveur gérées par les utilisateurs.

La bonne pratique avec cette option consiste à refuser aux utilisateurs l’autorisation de créer des rôles, y compris des rôles d’exécution Lambda, afin qu’ils ne puissent pas s’accorder eux-mêmes des autorisations progressives. Ainsi, en tant qu’administrateur, vous devez d’abord créer un Rôle d’exécution Lambda qui sera spécifié dans les applications sans serveur que les utilisateurs vont gérer. Pour plus d’informations sur la création de rôles d’exécution Lambda, consultez Création d’un rôle d’exécution dans la console IAM.

Pour l'exemple d'application Hello World, AWSLambdaBasicExecutionRolec'est suffisant pour exécuter l'application. Après avoir créé un rôle d'exécution Lambda, modifiez le fichier AWS SAM modèle de l'exemple d'application Hello World pour ajouter la propriété suivante à la AWS::Serverless::Function ressource :

Role: lambda-execution-role-arn

Lorsque l’application Hello World modifiée est en place, la déclaration de stratégie suivante accorde des autorisations suffisantes aux utilisateurs pour le déploiement, la mise à jour et l’élimination de l’application :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudFormationTemplate", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": [ "arn:aws:cloudformation:*:aws:transform/Serverless-2016-10-31" ] }, { "Sid": "CloudFormationStack", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:ExecuteChangeSet", "cloudformation:GetTemplateSummary", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": [ "arn:aws:cloudformation:*:111122223333:stack/*" ] }, { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/*" ] }, { "Sid": "ECRRepository", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:CompleteLayerUpload", "ecr:CreateRepository", "ecr:DeleteRepository", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:ListImages", "ecr:PutImage", "ecr:SetRepositoryPolicy", "ecr:UploadLayerPart" ], "Resource": [ "arn:aws:ecr:*:111122223333:repository/*" ] }, { "Sid": "ECRAuthToken", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": [ "*" ] }, { "Sid": "Lambda", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:ListTags", "lambda:RemovePermission", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:*" ] }, { "Sid": "IAM", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DetachRolePolicy", "iam:GetRole", "iam:TagRole" ], "Resource": [ "arn:aws:iam::111122223333:role/*" ] }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "lambda.amazonaws.com" } } }, { "Sid": "APIGateway", "Effect": "Allow", "Action": [ "apigateway:DELETE", "apigateway:GET", "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:*::*" ] } ] }
Note

L’exemple de déclaration de stratégie de cette section vous permet de déployer, de mettre à jour et d’éliminer l’exemple d’application Hello World. Si vous ajoutez des types de ressources supplémentaires à l’application, vous devez mettre à jour la déclaration de stratégie pour inclure les éléments suivants :

  1. Autorisation permettant à l’application d’appeler les actions du service.

  2. Le principal du service, si nécessaire pour les actions du service.

Par exemple, si vous ajoutez un flux de travail Step Functions, vous devrez peut-être ajouter des autorisations pour les actions répertoriées ici et le states.amazonaws.com.rproxy.goskope.comprincipal du service.

Pour plus d’informations sur la gestion des stratégies IAM, consultez Gestion des stratégies IAM dans le Guide de l’utilisateur IAM.