Restriction de l'accès aux paramètres Systems Manager à l'aide des politiques IAM - AWS Systems Manager

Restriction de l'accès aux paramètres Systems Manager à l'aide des politiques IAM

Vous limitez l'accès aux paramètres AWS Systems Manager en utilisant AWS Identity and Access Management (IAM). Plus précisément, vous créez des politiques IAM qui restreignent l'accès aux opérations API suivantes :

Lorsque vous utilisez des politiques IAM pour restreindre l'accès aux paramètres Systems Manager, nous vous recommandons de créer et d'utiliser des politiques IAM restrictives. Par exemple, la politique suivante permet à un utilisateur d'appeler les opérations d'API DescribeParameters et GetParameters pour un ensemble limité de ressources. Cela signifie que l'utilisateur peut obtenir des informations sur les paramètres qui commencent par prod-* et les utiliser.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
Important

Si un utilisateur a accès à un chemin, il peut accéder à tous les niveaux de ce chemin. Par exemple, si un utilisateur a l'autorisation d'accéder à un chemin /a, il peut également accéder à /a/b. Même si un utilisateur s'est vu refuser explicitement l'accès au paramètre /a/b dans IAM, il peut toujours appeler l'opération d'API GetParametersByPath de manière récursive pour /a et afficher /a/b.

Pour les administrateurs de confiance, vous pouvez fournir un accès complet à toutes les opérations d'API des paramètres Systems Manager en utilisant une politique similaire à l'exemple suivant. Cette politique accorde à l'utilisateur un accès complet à tous les paramètres de production qui commencent par dbserver-prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/dbserver-prod-*" }, { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

Refuser des autorisations

Chaque API est unique et dispose d'opérations et d'autorisations distinctes que vous pouvez autoriser ou refuser individuellement. Un refus explicite dans n'importe quelle politique remplace l'autorisation.

Note

La clé par défaut AWS Key Management Service (AWS KMS) dispose d'autorisations Decrypt pour tous les principaux IAM du Compte AWS. Si vous voulez disposer de différents niveaux d'accès aux paramètres SecureString dans votre compte, n'utilisez pas la clé par défaut.

Si vous voulez que toutes les opérations d'API qui récupèrent des valeurs de paramètres aient un comportement identique, vous pouvez utiliser un modèle tel que GetParameter* dans une politique. L'exemple suivant montre comment refuser GetParameter, GetParameters, GetParameterHistory et GetParametersByPath pour tous les paramètres commençant par prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }

L'exemple suivant montre comment refuser certaines commandes, tout en permettant à l'utilisateur d'en exécuter d'autres sur tous les paramètres commençant par prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
Note

L'historique des paramètres inclut toutes les versions de paramètres, y compris la version actuelle. Par conséquent, si un utilisateur se voit refuser l'autorisation pour GetParameter, GetParameters et GetParameterByPath, mais qu'il obtient l'autorisation pour GetParameterHistory, il peut voir le paramètre actuel, y compris les paramètres SecureString, en utilisant GetParameterHistory.

Autoriser uniquement l'exécution de paramètres spécifiques sur des nœuds

Vous pouvez contrôler l'accès afin que les nœuds gérés puissent uniquement exécuter les paramètres que vous spécifiez.

Si vous sélectionnez le type de paramètre SecureString lorsque vous créez votre paramètre, Systems Manager utilise AWS KMS pour chiffrer la valeur du paramètre. AWS KMS chiffre la valeur en utilisant soit une Clé gérée par AWS ou une clé gérée par le client. Pour de plus amples informations sur AWS KMS et AWS KMS key, veuillez consulter le Guide du développeur AWS Key Management Service.

Vous pouvez afficher la Clé gérée par AWS en exécutant la commande suivante à partir de l'AWS CLI.

aws kms describe-key --key-id alias/aws/ssm

L'exemple suivant permet aux nœuds d'obtenir une valeur de paramètre seulement pour les paramètres commençant par prod-. Si le paramètre est un paramètre SecureString, le nœud déchiffre alors la chaîne en utilisant la AWS KMS.

Note

Les politiques d'instances, comme dans l'exemple précédent, sont attribuées au rôle de l'instance dans IAM. Pour plus d'informations sur la configuration de l'accès aux fonctions Systems Manager, y compris la façon d'attribuer des politiques aux utilisateurs et aux instances, consultez Configuration de AWS Systems Manager pour les instances EC2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE" ] } ] }

Autorisations IAM pour l'utilisation des clés par défaut AWS et des clés gérées par le client

Les paramètres Parameter Store SecureString sont chiffrés et déchiffrés à l'aide de clés AWS KMS. Vous pouvez choisir de chiffrer vos paramètres SecureString à l'aide d'une AWS KMS key ou de la clé KMS par défaut fournie par AWS.

Lorsque vous utilisez une clé gérée par le client, la politique IAM qui accorde à un utilisateur l'accès à un paramètre ou à un chemin d'accès doit fournir des autorisations kms:Encrypt explicites pour la clé. Par exemple, la politique suivante autorise un utilisateur à créer, mettre à jour et afficher des paramètres SecureString commençant par « prod- » dans la Région AWS et le Compte AWS spécifiés.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }

1L'autorisation kms:GenerateDataKey est requise pour créer des paramètres avancés chiffrés à l'aide de la clé gérée par le client spécifiée.

En revanche, tous les utilisateurs du compte client ont accès à la clé par défaut gérée par AWS. Si vous utilisez cette clé par défaut pour chiffrer des paramètres SecureString et que vous ne souhaitez pas que les utilisateurs utilisent des paramètres SecureString, leurs politiques IAM doivent explicitement refuser l'accès à la clé par défaut, comme illustré dans l'exemple de politique suivant.

Note

Vous pouvez localiser l'Amazon Resource Name (ARN) de la clé par défaut dans la console AWS KMS sur la page Clés gérées par AWS. La clé par défaut est celle identifiée par aws/ssm dans la colonne Alias.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE" ] } ] }

Si vous avez besoin d'un contrôle d'accès précis sur les paramètres SecureString de votre compte, vous devez utiliser une clé gérée par le client pour protéger et restreindre l'accès à ces paramètres. Nous vous recommandons également d'utiliser AWS CloudTrail pour surveiller les activités des paramètres SecureString.

Pour plus d'informations, consultez les rubriques suivantes :