Contrôlez l'accès aux fenêtres de maintenance à l'aide du AWS CLI - AWS Systems Manager

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.

Contrôlez l'accès aux fenêtres de maintenance à l'aide du AWS CLI

Les procédures suivantes décrivent comment utiliser le AWS Command Line Interface (AWS CLI) pour créer les autorisations et les rôles requis pour Maintenance Windows, un outil dans AWS Systems Manager.

Tâche 1 : créer des fichiers de politique d’approbation et de politique gérée par le client au format JSON

Les tâches de la fenêtre de maintenance nécessitent un rôle IAM afin de fournir les autorisations requises pour s'exécuter sur les ressources cibles. Les autorisations sont fournies via une politique IAM attachée au rôle. Les types de tâches que vous exécutez et vos autres exigences opérationnelles déterminent le contenu de cette politique. Nous fournissons une politique de base que vous pouvez adapter à vos besoins. En fonction des tâches et des types de tâches exécutées par vos fenêtres de maintenance, il se peut que vous n'ayez pas besoin de toutes les autorisations de cette politique, et que vous deviez inclure des autorisations supplémentaires.

Dans cette tâche, vous spécifiez les autorisations nécessaires pour votre rôle de fenêtre de maintenance personnalisé dans une paire de fichiers JSON. Vous attachez cette politique au rôle que vous créez ultérieurement dans Tâche 2 : créer et vérifier un rôle de service personnalisé pour les fenêtres de maintenance à l'aide du AWS CLI.

Pour créer des fichiers de politique d’approbation et de politique gérée par le client
  1. Copiez et collez la politique d'approbation suivante dans un fichier texte. Enregistrez ce fichier avec le nom et l’extension de fichier suivants : mw-role-trust-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Copiez et collez la politique JSON suivante dans un autre fichier texte. Dans le même répertoire où vous avez créé le premier fichier, enregistrez ce fichier avec le nom et l’extension de fichier suivants : mw-role-custom-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetCommandInvocation", "ssm:GetAutomationExecution", "ssm:StartAutomationExecution", "ssm:ListTagsForResource", "ssm:GetParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StartExecution" ], "Resource": [ "arn:aws:states:*:*:execution:*:*", "arn:aws:states:*:*:stateMachine:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*" ] }, { "Effect": "Allow", "Action": [ "resource-groups:ListGroups", "resource-groups:ListGroupResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ssm.amazonaws.com" ] } } } ] }
  3. Modifiez le contenu de mw-role-custom-policy.json en fonction des besoins des tâches de maintenance que vous exécutez dans votre compte. Les modifications que vous apportez sont spécifiques à vos opérations planifiées.

    Par exemple :

    • Vous pouvez fournir des Amazon Resource Names (ARNs) pour des fonctions et des machines d'état spécifiques au lieu d'utiliser des qualificatifs génériques (*).

    • Si vous ne prévoyez pas d'exécuter AWS Step Functions des tâches, vous pouvez supprimer les states autorisations et (ARNs).

    • Si vous ne prévoyez pas d'exécuter AWS Lambda des tâches, vous pouvez supprimer les lambda autorisations et ARNs.

    • Si vous ne prévoyez pas d'exécuter des tâches d'automatisation, vous pouvez supprimer les autorisations ssm:GetAutomationExecution et ssm:StartAutomationExecution.

    • Ajoutez des autorisations supplémentaires qui peuvent être nécessaires à l'exécution des tâches. Par exemple, certaines actions Automation utilisent des piles AWS CloudFormation . Par conséquent, les autorisations cloudformation:CreateStack, cloudformation:DescribeStacks et cloudformation:DeleteStack sont requises.

      Autre exemple, le runbook d'automatisation AWS-CopySnapshot requiert des autorisations pour créer un instantané Amazon Elastic Block Store (Amazon EBS). Par conséquent, la fonction du service a besoin de l'autorisation ec2:CreateSnapshot.

      Pour plus d'informations sur les autorisations de rôle requises par les runbooks d'automatisation, consultez les descriptions du runbook dans la référence du runbook d'automatisation d'AWS Systems Manager.

    Enregistrez à nouveau le fichier après avoir effectué les modifications nécessaires.

Tâche 2 : créer et vérifier un rôle de service personnalisé pour les fenêtres de maintenance à l'aide du AWS CLI

La politique que vous avez créée dans la tâche précédente est attachée au rôle de service de fenêtre de maintenance que vous créez dans cette tâche. Lorsque les utilisateurs enregistrent une tâche de fenêtre de maintenance, ils spécifient ce rôle IAM dans le cadre de la configuration de la tâche. Les autorisations de ce rôle permettent à Systems Manager d'exécuter des tâches dans les fenêtres de maintenance en votre nom.

Important

Auparavant, la console Systems Manager vous permettait de choisir le rôle lié au service IAM AWS géré AWSServiceRoleForAmazonSSM à utiliser comme rôle de maintenance pour vos tâches. L'utilisation de ce rôle et de la politique associée, AmazonSSMServiceRolePolicy, pour les tâches de la fenêtre de maintenance n'est plus recommandée. Si vous utilisez ce rôle pour des tâches de fenêtre de maintenance maintenant, nous vous encourageons à cesser de l'utiliser. Au lieu de cela, créez votre propre rôle IAM permettant la communication entre Systems Manager et d'autres Services AWS lorsque les tâches de votre fenêtre de maintenance sont exécutées.

Dans cette tâche, vous exécutez des commandes CLI pour créer votre rôle de service pour les fenêtres de maintenance, en ajoutant le contenu de la politique à partir des fichiers JSON que vous avez créés.

Créer un rôle de service personnalisé pour les fenêtres de maintenance à l’aide de l’ AWS CLI
  1. Ouvrez le AWS CLI et exécutez la commande suivante dans le répertoire où vous avez placé mw-role-custom-policy.json etmw-role-trust-policy.json. La commande crée un rôle de service de fenêtre de maintenance appelé my-maintenance-window-role et y attache la politique d’approbation.

    Linux & macOS
    aws iam create-role \ --role-name "my-maintenance-window-role" \ --assume-role-policy-document file://mw-role-trust-policy.json
    Windows
    aws iam create-role ^ --role-name "my-maintenance-window-role" ^ --assume-role-policy-document file://mw-role-trust-policy.json

    Le système renvoie des informations similaires à ce qui suit :

    {
        "Role": {
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Action": "sts:AssumeRole",
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "ssm.amazonaws.com"
                        }
                    }
                ]
            },
            "RoleId": "AROAIIZKPBKS2LEXAMPLE",
            "CreateDate": "2024-08-19T03:40:17.373Z",
            "RoleName": "my-maintenance-window-role",
            "Path": "/",
            "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role"
        }
    }
    Note

    Notez les valeurs de RoleName et Arn. Vous les incluez dans la commande suivante.

  2. Exécutez la commande suivante pour attacher la politique gérée par le client au rôle. Remplacez l'account-idespace réservé par votre propre identifiant Compte AWS

    Linux & macOS
    aws iam attach-role-policy \ --role-name "my-maintenance-window-role" \ --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
    Windows
    aws iam attach-role-policy ^ --role-name "my-maintenance-window-role" ^ --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
  3. Exécutez la commande suivante pour vérifier que votre rôle a été créé et que la politique d’approbation a été attachée.

    aws iam get-role --role-name my-maintenance-window-role

    La commande renvoie des informations semblables à ce qui suit :

    {
        "Role": {
            "Path": "/",
            "RoleName": "my-maintenance-window-role",
            "RoleId": "AROA123456789EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role",
            "CreateDate": "2024-08-19T14:13:32+00:00",
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "ssm.amazonaws.com"
                        },
                        "Action": "sts:AssumeRole"
                    }
                ]
            },
            "MaxSessionDuration": 3600,
            "RoleLastUsed": {
                "LastUsedDate": "2024-08-19T14:30:44+00:00",
                "Region": "us-east-2"
            }
        }
    }
  4. Exécutez la commande suivante pour vérifier que la politique gérée par le client a été attachée au rôle.

    aws iam list-attached-role-policies --role-name my-maintenance-window-role

    La commande renvoie des informations semblables à ce qui suit :

    {
        "AttachedPolicies": [
            {
                "PolicyName": "mw-role-custom-policy",
                "PolicyArn": "arn:aws:iam::123456789012:policy/mw-role-custom-policy"
            }
        ]
    }

Tâche 3 : accorder des autorisations aux utilisateurs spécifiés pour enregistrer les tâches de la fenêtre de maintenance à l’aide de l’ AWS CLI

L’octroi aux utilisateurs d’autorisations pour accéder au rôle de service personnalisé de la fenêtre de maintenance leur permet de l’utiliser avec leurs tâches de fenêtre de maintenance. Cela s'ajoute aux autorisations que vous leur avez déjà accordées pour utiliser les commandes de l'API Systems Manager pour Maintenance Windows outil. Ce rôle IAM indique les autorisations nécessaires pour exécuter une tâche de fenêtre de maintenance. Par conséquent, un utilisateur ne peut pas enregistrer de tâches avec une fenêtre de maintenance à l’aide de votre rôle de service personnalisé s’il n’a pas la possibilité de transmettre ces autorisations IAM.

Lorsque vous enregistrez une tâche avec une fenêtre de maintenance, vous spécifiez un rôle de service pour exécuter les opérations de la tâche. C'est le rôle que le service endossera lorsqu'il exécutera des tâches en votre nom. Avant cela, pour enregistrer la tâche elle-même, affectez la politique PassRole IAM à une entité IAM (comme un compte ou un groupe). Cela permet à l’entité IAM de spécifier, lors de l’enregistrement de ces tâches dans la fenêtre de maintenance, le rôle à utiliser lors de l’exécution des tâches. Pour en savoir plus, reportez-vous à Octroi d’autorisations à un utilisateur pour transférer un rôle à un Service AWS dans le Guide de l’utilisateur IAM.

Pour configurer les autorisations pour les utilisateurs autorisés à enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI
  1. Copiez et collez la politique AWS Identity and Access Management (IAM) suivante dans un éditeur de texte et enregistrez-la sous le nom et l'extension de fichier suivants :mw-passrole-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/my-maintenance-window-role" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/" } ] }

    my-maintenance-window-roleRemplacez-le par le nom du rôle de fenêtre de maintenance personnalisé que vous avez créé précédemment.

    Remplacez account-id par l'identifiant de votre Compte AWS. L'ajout de cette autorisation pour la ressource arn:aws:iam::account-id:role/ permet aux utilisateurs du groupe d'afficher et de choisir parmi les rôles clients dans la console lorsqu'ils créent une tâche de fenêtre de maintenance. L'ajout de cette autorisation pour arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/ permet aux utilisateurs du groupe de choisir le rôle lié au service Systems Manager dans la console lorsqu'ils créent une tâche de fenêtre de maintenance.

  2. Ouvrez le AWS CLI.

  3. Selon que vous attribuez l’autorisation à une entité IAM (utilisateur ou groupe), exécutez l’une des commandes suivantes.

    • Pour une entité IAM :

      Linux & macOS
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-user-policy ^ --user-name "user-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Pouruser-name, spécifiez l'utilisateur qui affecte les tâches aux fenêtres de maintenance. Pourpolicy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-iam-passrole-policy. Pourpath-to-document, spécifiez le chemin du fichier que vous avez enregistré à l'étape 1. Par exemple : file://C:\Temp\mw-passrole-policy.json

      Note

      Pour autoriser un utilisateur à enregistrer des tâches pour les fenêtres de maintenance à l’aide de la console Systems Manager, vous devez également affecter la politique AmazonSSMFullAccess à votre compte (ou une politique IAM qui fournit un ensemble plus petit d’autorisations d’accès pour Systems Manager qui couvre les tâches de la fenêtre de maintenance). Exécutez la commande suivante pour attribuer la politique AmazonSSMFullAccess à votre utilisateur.

      Linux & macOS
      aws iam attach-user-policy \ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" \ --user-name "user-name"
      Windows
      aws iam attach-user-policy ^ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" ^ --user-name "user-name"
    • Pour un groupe IAM :

      Linux & macOS
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-group-policy ^ --group-name "group-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Pourgroup-name, spécifiez le groupe dont les membres attribuent des tâches aux fenêtres de maintenance. Pourpolicy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-iam-passrole-policy. Pourpath-to-document, spécifiez le chemin du fichier que vous avez enregistré à l'étape 1. Par exemple : file://C:\Temp\mw-passrole-policy.json

      Note

      Pour autoriser les membres d'un groupe à enregistrer des tâches pour les fenêtres de maintenance à l'aide de la console Systems Manager, vous devez également affecter la politique AmazonSSMFullAccess à votre groupe. Exécutez la commande suivante pour attribuer cette politique à votre groupe.

      Linux & macOS
      aws iam attach-group-policy \ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" \ --group-name "group-name"
      Windows
      aws iam attach-group-policy ^ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" ^ --group-name "group-name"
  4. Exécutez la commande suivante pour vérifier que la politique a bien été attribuée au groupe.

    Linux & macOS
    aws iam list-group-policies \ --group-name "group-name"
    Windows
    aws iam list-group-policies ^ --group-name "group-name"

Tâche 4 : Empêcher les utilisateurs spécifiés d'enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI

Vous pouvez refuser l'ssm:RegisterTaskWithMaintenanceWindowautorisation aux utilisateurs de votre site Compte AWS auxquels vous ne souhaitez pas enregistrer des tâches dans les fenêtres de maintenance. Cela fournit une couche de prévention supplémentaire pour les utilisateurs qui ne devraient pas enregistrer les tâches de la fenêtre de maintenance.

Selon que vous refusez l'autorisation ssm:RegisterTaskWithMaintenanceWindow à un utilisateur individuel ou à un groupe, utilisez l'une des procédures suivantes pour empêcher les utilisateurs d'enregistrer des tâches avec une fenêtre de maintenance.

Pour configurer les autorisations pour les utilisateurs qui ne sont pas autorisés à enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI
  1. Copiez et collez la politique IAM suivante dans un éditeur de texte et enregistrez-la avec le nom et l'extension suivants : deny-mw-tasks-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  2. Ouvrez le AWS CLI.

  3. Selon que vous attribuez l’autorisation à une entité IAM (utilisateur ou groupe), exécutez l’une des commandes suivantes.

    • Pour un utilisateur :

      Linux & macOS
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-user-policy ^ --user-name "user-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Pouruser-name, spécifiez l'utilisateur pour empêcher l'attribution de tâches aux fenêtres de maintenance. Pourpolicy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-deny-mw-tasks-policy. Pourpath-to-document, spécifiez le chemin du fichier que vous avez enregistré à l'étape 1. Par exemple : file://C:\Temp\deny-mw-tasks-policy.json

    • Pour un groupe :

      Linux & macOS
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-group-policy ^ --group-name "group-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Pourgroup-name, spécifiez le groupe dont vous souhaitez empêcher l'attribution de tâches aux fenêtres de maintenance. Pourpolicy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-deny-mw-tasks-policy. Pourpath-to-document, spécifiez le chemin du fichier que vous avez enregistré à l'étape 1. Par exemple : file://C:\Temp\deny-mw-tasks-policy.json

  4. Exécutez la commande suivante pour vérifier que la politique a bien été attribuée au groupe.

    Linux & macOS
    aws iam list-group-policies \ --group-name "group-name"
    Windows
    aws iam list-group-policies ^ --group-name "group-name"