Quelles sont les bonnes pratiques IAM relatives à l'utilisation d'un ensemble de piles pour déployer des ressources AWS CloudFormation ?
Je souhaite connaître les bonnes pratiques d'AWS Identity and Access Management (IAM) concernant l'utilisation d'un ensemble de piles pour déployer des ressources AWS CloudFormation.
Résolution
Identifiez l'erreur que vous avez reçue. Suivez ensuite les étapes de la section correspondante ci-dessous pour résoudre l'erreur.
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Erreurs d'autorisation IAM les plus courantes dans un ensemble de piles
Erreur : « Account 111111111111 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'. »
Cette erreur se produit généralement lorsque le rôle IAM AWSCloudFormationStackSetExecutionRole ou AWSCloudFormationStackSetAdministrationRole est manquant. Cela se produit également lorsque la relation d’approbation entre l'administrateur et le compte cible n'est pas correctement établie.
Pour corriger cette erreur, procédez comme suit :
-
Vérifiez que les rôles IAM AWSCloudFormationStackSetExecutionRole et AWSCloudFormationStackSetAdministrationRole existent dans votre compte administrateur. Assurez-vous que les rôles sont correctement nommés. Par exemple, le rôle d'administration doit être AWSCloudFormationStackSetExecutionRole. Le rôle dans chacun de vos comptes cibles doit être nommé AWSCloudFormationStackSetExecutionRole.
Remarque : Vous pouvez également configurer des autorisations IAM de base pour les ensembles de piles à l'aide des modèles AWS CloudFormation suivants : -
Si les rôles IAM existent, vérifiez l’existence d’une relation d’approbation entre les rôles.
Consultez les exemples d'extraits de code suivants qui activent la relation d’approbation de base entre les rôles IAM.
Relation d’approbation AWSCloudFormationStackSetAdministrationRole :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Stratégie en ligne AWSCloudFormationStackSetAdministrationRole :
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:*:iam::*:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }
Section sur les relations d’approbation AWSCloudFormationStackSetExecutionRole :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:root" }, "Action": "sts:AssumeRole" } ] }
Erreur : « Resource handler returned message: "Account used is not a delegated administrator (Service: CloudFormation, Status Code: 400, Request ID: xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx)" (RequestToken:xxxxx-xxx-xxxxx, HandlerErrorCode: InvalidRequest) » lors du déploiement de StackSet à l'aide du type de ressource CloudFormation « AWS::CloudFormation::StackSet »
-ou-
Erreur (AWS CLI) : « An error occurred (ValidationError) when calling the ListStackSets operation: Account used is not a delegated administrator »
Ces erreurs indiquent que le compte AWS utilisé pour le déploiement de l’ensemble de piles n'est pas enregistré en tant qu'administrateur délégué. Ou bien, les erreurs se produisent parce que le rôle IAM ne dispose pas des autorisations requises. Votre organisation peut avoir jusqu'à cinq administrateurs délégués enregistrés à la fois. Les administrateurs délégués peuvent choisir d'effectuer le déploiement sur tous les comptes de votre organisation ou sur des unités d’organisation (UO) spécifiques.
Pour corriger cette erreur, procédez comme suit :
-
Vérifiez que le compte est enregistré en tant que compte d'administrateur délégué à l'aide de la commande AWS CLI suivante :
aws organizations list-delegated-administrators \ --service-principal=member.org.stacksets.cloudformation.amazonaws.com
-
Si le compte n'est pas enregistré en tant qu'administrateur délégué, enregistrez-le. Vous pouvez également utiliser la commande AWS CLI suivante pour enregistrer l'administrateur délégué :
aws organizations register-delegated-administrator \ --service-principal=member.org.stacksets.cloudformation.amazonaws.com \ --account-id="memberAccountId"
Remarque : Remplacez memberAccountId par votre ID de compte AWS.
-
Si le compte est un administrateur délégué, vérifiez l'autorisation IAM suivante pour votre rôle IAM :
organizations:ListDelegatedAdministrators cloudformation:TagResource cloudformation:CreateStackSet
Remarque : Les administrateurs délégués disposent de toutes les autorisations nécessaires pour effectuer des déploiements sur les comptes de votre organisation. Le compte de gestion ne peut pas limiter les autorisations d'administrateur déléguées pour le déploiement sur des unités d'organisation spécifiques ou pour effectuer des opérations spécifiques sur l'ensemble de piles.
Erreur : « ResourceStatusReason:Invalid principal in policy: "AWS":"arn:aws:iam::111111111111:role/myDeploymentRole" (Service : AmazonIdentityManagement; Status Code: 400; Error Code: MalformedPolicyDocument; Request ID: xxxxxx-xxxx-xxxx-xxxx-xxxxxx; Proxy: null) »
Ce message d'erreur indique que la valeur d'un élément Principal de votre stratégie d’approbation IAM n'est pas correcte. Pour plus d'informations sur la résolution de cette erreur, consultez la section Comment puis-je résoudre l'erreur de stratégie d’approbation IAM « Impossible de mettre à jour la stratégie d’approbation. Principal non valide dans la stratégie » ?
Erreur : « ResourceLogicalId:myDeploymentRole, ResourceType:AWS::IAM::Role, ResourceStatusReason:myDeploymentRole already exist »
Erreur : « ResourceLogicalId:myDeploymentRolePolicy, ResourceType:AWS::IAM::ManagedPolicy, ResourceStatusReason:myDeploymentRolePolicy already exist »
Ces erreurs se produisent car AWS IAM est un service disponible dans le monde entier et non un service régional. Les services AWS traitent et stockent le contenu dans les régions AWS pour les services régionaux. L'IAM étant un service mondial, lorsque vous créez un rôle ou une stratégie IAM dans une région, vous pouvez utiliser ce rôle ou cette stratégie dans toutes les régions.
Résolvez cette erreur en définissant la condition dans votre modèle d'ensemble de piles CloudFormation, comme indiqué ci-dessous. Lorsque vous spécifiez la condition régionale, la pile déploie les ressources IAM dans une seule région (us-east-1). Une fois terminée, l'opération a correctement mis à jour tous les comptes de pile de la région.
L'extrait de modèle YAML ci-dessous montre comment déployer des ressources IAM uniquement dans la région us-east-1 :
AWSTemplateFormatVersion: "2010-09-09" Conditions: RoleCreate: !Equals - !Ref AWS::Region - us-east-1 Resources: myIAMRole: Type: 'AWS::IAM::Role' Condition: RoleCreate Properties: RoleName: 'TestingIAMRole2' AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - 'sts:AssumeRole'
Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a un moislg...
- Réponse acceptéedemandé il y a un moislg...
- AWS OFFICIELA mis à jour il y a 2 mois
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans