Contraintes de lancement AWS Service Catalog - AWS Service Catalog

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.

Contraintes de lancement AWS Service Catalog

Une contrainte de lancement spécifie le rôle AWS Identity and Access Management (IAM) AWS Service Catalog assumé lorsqu'un utilisateur final lance, met à jour ou met fin à un produit. Un rôle IAM est un ensemble d'autorisations qu'un utilisateur ou un AWS service peut assumer temporairement pour utiliser les AWS services. Pour un exemple d'introduction, voir :

Les contraintes de lancement s'appliquent aux produits du portefeuille (association produit-portefeuille). Les contraintes de lancement ne s'appliquent pas au niveau du portefeuille ou à un produit de tous les portefeuilles. Pour associer une contrainte de lancement à tous les produits d'un portefeuille, vous devez appliquer la contrainte de lancement à chaque produit, de manière individuelle.

Sans contrainte de lancement, les utilisateurs finaux doivent lancer et gérer les produits à l'aide de leurs propres informations d'identification IAM. Pour ce faire, ils doivent disposer d'autorisations pour AWS CloudFormation les AWS services utilisés par les produits, etAWS Service Catalog. En utilisant un rôle de lancement, vous pouvez plutôt limiter les autorisations des utilisateurs finaux au minimum dont ils ont besoin pour ce produit. Pour plus d'informations sur les autorisations des utilisateurs finaux, consultez Identity and Access Management dans AWS Service Catalog.

Pour créer et attribuer des rôles IAM, vous devez disposer des autorisations administratives IAM suivantes :

  • iam:CreateRole

  • iam:PutRolePolicy

  • iam:PassRole

  • iam:Get*

  • iam:List*

Configuration d'un rôle de lancement

Le rôle IAM que vous attribuez à un produit en tant que contrainte de lancement doit être autorisé à utiliser les éléments suivants :

Pour les produits Cloudformation

  • La politique arn:aws:iam::aws:policy/AWSCloudFormationFullAccess AWS CloudFormation gérée

  • Services dans le AWS CloudFormation modèle du produit

  • Accès en lecture au AWS CloudFormation modèle dans un compartiment Amazon S3 appartenant au service.

Pour les produits Terraform

  • Services du modèle Amazon S3 pour le produit

  • Accès en lecture au modèle Amazon S3 dans un compartiment Amazon S3 appartenant au service.

  • resource-groups:Tagpour le balisage dans une instance Amazon EC2 (pris en charge par le moteur de provisionnement Terraform lors des opérations de provisionnement)

  • resource-groups:CreateGrouppour le balisage des groupes de ressources (supposé par AWS Service Catalog créer des groupes de ressources et attribuer des balises)

La politique de confiance du rôle IAM doit permettre AWS Service Catalog d'assumer le rôle. Dans la procédure ci-dessous, la politique de confiance sera définie automatiquement lorsque vous sélectionnez AWS Service Catalog le type de rôle. Si vous n'utilisez pas la console, consultez la section Création de politiques de confiance pour les AWS services qui assument des rôles dans Comment utiliser les politiques de confiance avec les rôles IAM.

Note

Les autorisations servicecatalog:ProvisionProduct, servicecatalog:TerminateProvisionedProduct et servicecatalog:UpdateProvisionedProduct ne peuvent pas être attribuées à un rôle de lancement. Vous devez utiliser des rôles IAM, comme indiqué dans les étapes de politique intégrées dans la section Accorder des autorisations aux utilisateurs AWS Service Catalog finaux.

Note

Pour consulter les produits et ressources Cloudformation fournis dans la AWS Service Catalog console, les utilisateurs finaux ont besoin d'un accès en AWS CloudFormation lecture. L'affichage des produits et ressources provisionnés dans la console n'utilise pas le rôle de lancement.

Pour créer un rôle de lancement
  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

    Les produits Terraform nécessitent des configurations de rôles de lancement supplémentaires. Pour plus d'informations, consultez Étape 5 : Création de rôles de lancement dans Getting Started with a Terraform Open Source product.

  2. Sélectionnez Roles (Rôles).

  3. Choisissez Create New Role (Créer un nouveau rôle).

  4. Entrez un nom de rôle, puis choisissez Next Step.

  5. Sous Rôles de AWS service à côté de AWS Service Catalog, choisissez Sélectionner.

  6. Sur la page Attach Policy, choisissez Next Step.

  7. Pour créer le rôle, choisissez Create Role.

Pour attacher une stratégie au nouveau rôle
  1. Choisissez le rôle que vous avez créé pour afficher la page des détails du rôle.

  2. Choisissez l'onglet Permissions et développez la section Inline Policies. Puis, choisissez click here.

  3. Choisissez Custom Policy, puis Select.

  4. Entrez un nom pour la stratégie et collez ce qui suit dans l'éditeur Policy Document :

    "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":"*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/servicecatalog:provisioning":"true" } } ] }
    Note

    Lorsque vous configurez un rôle de lancement pour une contrainte de lancement, vous devez utiliser cette chaîne :"s3:ExistingObjectTag/servicecatalog:provisioning":"true".

  5. Ajoutez une ligne à la politique pour chaque service supplémentaire utilisé par le produit. Par exemple, pour ajouter une autorisation pour Amazon Relational Database Service (Amazon RDS), entrez une virgule à la fin de la dernière ligne de Action la liste, puis ajoutez la ligne suivante :

    "rds:*"
  6. Choisissez Apply Policy (Appliquer la stratégie).

Application d'une contrainte de lancement

Après avoir configuré le rôle de lancement, attribuez-le au produit en tant que contrainte de lancement. Cette action indique AWS Service Catalog d'assumer le rôle lorsqu'un utilisateur final lance le produit.

Pour attribuer le rôle à un produit
  1. Ouvrez la console Service Catalog à l'adresse https://console.aws.amazon.com/servicecatalog/.

  2. Choisissez le portefeuille qui contient le produit.

  3. Cliquez sur l'onglet Constraints (Contraintes) puis sur Create constraint (Créer une contrainte).

  4. Choisissez le produit dans Product (Produit), puis Launch (Lancement) sous Constraint type (Type de contrainte). Choisissez Continuer.

  5. Dans la section Contrainte de lancement, vous pouvez sélectionner un rôle IAM dans votre compte et saisir un ARN de rôle IAM, ou saisir le nom du rôle.

    Si vous spécifiez le nom du rôle et si un compte utilise la contrainte de lancement, le compte utilise ce nom pour le rôle IAM. Cette approche permet aux contraintes relatives aux rôles de lancement d'être indépendantes du compte, ce qui vous permet de créer moins de ressources par compte partagé.

    Note

    Le nom de rôle indiqué doit exister dans le compte qui a créé la contrainte de lancement et dans le compte de l'utilisateur qui lance un produit avec cette contrainte de lancement.

  6. Après avoir spécifié le rôle IAM, choisissez Create (Créer).

Ajouter un adjoint confus à la contrainte de lancement

AWS Service Catalogprend en charge la protection Confused Deputy pour les API qui s'exécutent avec une demande Assume Role. Lorsque vous ajoutez une contrainte de lancement, vous pouvez restreindre l'accès au rôle de lancement en utilisant sourceArn les conditions sourceAccount et la politique de confiance du rôle de lancement. Cela garantit que le rôle de lancement est appelé par une source fiable.

Dans l'exemple suivant, l'AWS Service Catalogutilisateur final appartient au compte 111111111111. Lorsque l'AWS Service Catalogadministrateur crée un rôle LaunchConstraint pour un produit, l'utilisateur final peut spécifier les conditions suivantes dans la politique de confiance du rôle de lancement afin de restreindre le rôle d'assumer le rôle au compte 111111111111.

"Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:servicecatalog:us-east-1:111111111111:*" }, "StringEquals":{ "aws:SourceAccount":"111111111111" } }

Un utilisateur qui approvisionne un produit avec le LaunchConstraint doit avoir le même AccountId (1111111111). Dans le cas contraire, l'opération échoue avec une AccessDenied erreur, empêchant ainsi toute utilisation abusive du rôle de lancement.

Les AWS Service Catalog API suivantes sont sécurisées pour la protection de Confused Deputy :

  • LaunchConstraint

  • ProvisionProduct

  • UpdateProvisionedProduct

  • TerminateProvisionedProduct

  • ExecuteProvisionedProductServiceAction

  • CreateProvisionedProductPlan

  • ExecuteProvisionedProductPlan

La sourceArn protection pour AWS Service Catalog ne prend en charge que les ARN modèles, tels que « arn:<aws-partition>:servicecatalog:<region>:<accountId>: ». Elle ne prend pas en charge les ARN de ressources spécifiques.

Vérification de la contrainte de lancement

Pour vérifier qu'il AWS Service Catalog utilise le rôle pour lancer le produit et qu'il approvisionne correctement le produit, lancez le produit depuis la AWS Service Catalog console. Pour tester une contrainte avant sa publication pour des utilisateurs, créez un portefeuille test qui contient les mêmes produits et testez les contraintes avec ce portefeuille.

Pour lancer le produit
  1. Dans le menu de la AWS Service Catalog console, choisissez Service Catalog, End user.

  2. Choisissez le produit pour ouvrir la page de détails du produit. Dans le tableau des options de lancement, vérifiez que le nom de ressource Amazon (ARN) du rôle apparaît.

  3. Choisissez Launch product.

  4. Poursuivez les étapes de lancement en indiquant les informations requises.

  5. Vérifiez que le produit démarre correctement.