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, une capacité de AWS Systems Manager.

Tâche 1 : créer des fichiers de politique de confiance et de politique gérés par le client au JSON format

Les tâches de la fenêtre de maintenance nécessitent un IAM rôle fournissant les autorisations requises pour s'exécuter sur les ressources cibles. Les autorisations sont fournies par le biais d'une IAM politique 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 proposons 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 JSON fichiers. 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 politiques de confiance et des fichiers de politique gérés par le client
  1. Copiez et collez la politique d'approbation suivante dans un fichier texte. Enregistrez ce fichier sous 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 JSON politique suivante dans un autre fichier texte. Dans le répertoire où vous avez créé le premier fichier, enregistrez ce fichier sous 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 selon mw-role-custom-policy.json les besoins pour les 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 etARNs.

    • 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 Automation AWS-CopySnapshot nécessite des autorisations pour créer un instantané Amazon Elastic Block Store (AmazonEBS). 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 apporté 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 lors de 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 IAM rôle 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 IAM lié au service 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. Créez plutôt votre propre IAM rôle qui permet la communication entre Systems Manager et les autres Services AWS lorsque les tâches de votre fenêtre de maintenance s'exécutent.

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

Créez un rôle de service personnalisé pour les fenêtres de maintenance à l'aide du 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 associe la politique de confiance.

    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 associer la politique gérée par le client au rôle. Remplacez le account-id espace réservé avec 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 de confiance 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 est 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 du AWS CLI

Le fait de donner aux utilisateurs les autorisations nécessaires pour accéder au rôle de service personnalisé pour les fenêtres de maintenance leur permet de l'utiliser dans le cadre de leurs tâches liées aux fenêtres de maintenance. Cela vient s'ajouter aux autorisations que vous leur avez déjà accordées pour utiliser les API commandes Systems Manager pour Maintenance Windows capacité. Ce IAM rôle 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 dans une fenêtre de maintenance à l'aide de votre rôle de service personnalisé s'il n'est pas en mesure de transmettre ces IAM autorisations.

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 tâche réelles. 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, attribuez la IAM PassRole politique à une IAM entité (telle qu'un utilisateur ou un groupe). Cela permet à l'IAMentité de spécifier, dans le cadre 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 plus d'informations, voir Accorder à un utilisateur l'autorisation de transmettre un rôle à un Service AWS dans le Guide de IAM l'utilisateur.

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 suivante AWS Identity and Access Management (IAM) 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/" } ] }

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

    Remplacez account-id avec 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 IAM entité (utilisateur ou groupe), exécutez l'une des commandes suivantes.

    • Pour une IAM entité :

      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

      Dans user-name, spécifiez l'utilisateur qui affecte les tâches aux fenêtres de maintenance. Dans policy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-iam-passrole-policy. Dans path-to-document, spécifiez le chemin d'accès au 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 attribuer la AmazonSSMFullAccess politique à votre utilisateur (ou une IAM politique fournissant un ensemble réduit d'autorisations d'accès pour Systems Manager qui couvre les tâches des fenêtres de maintenance). Exécutez la commande suivante pour attribuer la AmazonSSMFullAccess politique à 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

      Dans group-name, spécifiez le groupe dont les membres attribuent des tâches aux fenêtres de maintenance. Dans policy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-iam-passrole-policy. Dans path-to-document, spécifiez le chemin d'accès au 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 IAM politique suivante dans un éditeur de texte et enregistrez-la sous le nom et l'extension de fichier 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 IAM entité (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

      Dans user-name, spécifiez l'utilisateur à empêcher d'attribuer des tâches aux fenêtres de maintenance. Dans policy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-deny-mw-tasks-policy. Dans path-to-document, spécifiez le chemin d'accès au 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

      Dans group-name, spécifiez le groupe dont vous souhaitez empêcher l'attribution de tâches aux fenêtres de maintenance. Dans policy-name, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemplemy-deny-mw-tasks-policy. Dans path-to-document, spécifiez le chemin d'accès au 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"