Politiques de clés dans AWS KMS - AWS Key Management Service

Politiques de clés dans AWS KMS

Les politiques de clé constituent le principal moyen de contrôler l'accès aux AWS KMS keys. Chaque clé KMS doit avoir exactement une stratégie de clé. Les déclarations dans le document de stratégie de clé déterminent qui a l'autorisation d'utiliser la clé KMS et la façon dont ils peuvent l'utiliser. Vous pouvez également utiliser les stratégies et les octrois IAM pour contrôler l'accès à la clé KMS, mais chaque clé KMS doit avoir une stratégie de clé. Pour de plus amples informations, veuillez consulter . Gestion de l'accès aux clés KMS.

Pour obtenir de l'aide sur la rédaction et la mise en forme d'un document de stratégie JSON, veuillez consulter la Référence de stratégie JSON IAM dans le Guide de l'utilisateur IAM.

Présentation des stratégies de clé

Chaque clé KMS doit avoir exactement une stratégie de clé. Cette stratégie de clé contrôle uniquement l'accès à sa clé KMS associée, ainsi que les stratégies IAM et les octrois. Contrairement aux stratégies IAM, qui sont mondiales, les stratégies de clés sont régionales. Chaque stratégie de clé n'est effective que dans la région qui héberge la clé KMS.

Une stratégie de clé est mise en œuvre en tant que document JSON (JavaScript Object Notation) de maximum 32 Ko (32 768 octets). Vous pouvez créer et gérer des stratégies de clé dans la console AWS KMS ou en utilisant des opérations d'API AWS KMS, telles que CreateKey et PutKeyPolicy.

Les documents de stratégie de clé partagent une syntaxe JSON commune avec les autres documents de stratégie dans AWS ; ils ont la structure de base suivante :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Describe the policy statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } } ] }

Pour plus d'informations sur l'utilisation de la vue par défaut de la console pour les politiques de clé, veuillez consulter Stratégie de clé par défaut et Modification d'une stratégie de clé. Pour obtenir de l'aide sur la rédaction et la mise en forme d'un document de stratégie JSON, veuillez consulter la Référence de stratégie JSON IAM dans le Guide de l'utilisateur IAM.

Un document de stratégie de clé doit avoir un élément Version. Nous vous recommandons de définir la version sur 2012-10-17 (la dernière version). En outre, un document de stratégie de clé doit avoir une ou plusieurs instructions, et chaque instruction peut comprendre jusqu'à six éléments :

  • Sid – (facultatif) Le SID est un identifiant de déclaration, une chaîne arbitraire que vous pouvez utiliser pour identifier la déclaration.

  • Effet – (requis) L'effet spécifie s'il convient d'accorder ou de refuser les autorisations figurant dans la déclaration de stratégie. L'effet doit être Allow ou Deny. Si vous n'autorisez pas explicitement l'accès à une clé KMS, l'accès est implicitement refusé. Vous pouvez explicitement refuser l'accès à une clé KMS. Vous pouvez le faire afin de vous assurer qu'un utilisateur n'y a pas accès, même si une stratégie différente autorise l'accès.

  • Mandataire – (obligatoire) Le mandataire est l'identité qui obtient les autorisations figurant dans la déclaration de stratégie. Vous pouvez spécifier Comptes AWS (racine), les utilisateurs IAM, les rôles IAM et certains services AWS en tant que mandataires dans une stratégie de clé. Les groupes IAM ne sont pas des mandataires valides.

    Lorsque le mandataire est un autre Compte AWS ou ses mandataires, les autorisations ne sont effectives que lorsque le compte est activé dans la région avec la clé KMS et la stratégie de clé. Pour plus d'informations sur les régions qui ne sont pas activées par défaut (« Régions d'adhésion »), veuillez consulter Gestion de Régions AWSdans la Référence générale AWS.

    Note

    Ne définissez pas le mandataire sur un astérisque (*) dans une déclaration de stratégie de clé qui autorise des autorisations, sauf si vous utilisez des conditions pour limiter la stratégie de clé. Un astérisque autorise chaque identité dans chaque Compte AWS à utiliser la clé KMS, sauf si une autre déclaration de stratégie la refuse explicitement. Les utilisateurs dans d'autres Comptes AWS ont juste besoin des autorisations IAM correspondantes dans leurs propres comptes pour utiliser la clé KMS.

  • Action – (requis) Les actions spécifient les opérations d'API à autoriser ou refuser. Par exemple, l'action kms:Encrypt correspond à l'opération AWS KMS Chiffrer. Vous pouvez répertorier plusieurs actions dans une instruction de stratégie. Pour de plus amples informations, veuillez consulter . Référence des autorisations .

  • Ressource – (requis) Dans une stratégie de clé, la valeur de l'élément Ressource est "*", ce qui signifie « cette clé KMS ». L'astérisque ("*") identifie la clé KMS à laquelle la stratégie de clé est attachée.

  • Condition – (facultatif) Les conditions spécifient les exigences qui doivent être satisfaites pour qu'une stratégie de clé prenne effet. Les conditions permettent à AWS d'évaluer le contexte d'une demande d'API afin de déterminer si la déclaration de stratégie s'applique ou non.

    Le format d'une condition est le suivant :

    "Condition": {"condition operator": {"condition key": "condition value"}}

    comme :

    "Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}

    Pour plus d'informations, veuillez consulter Conditions de politique.

Pour plus d'informations sur la syntaxe des stratégies AWS, veuillez consulter Référence de stratégie IAM AWS dans le Guide de l'utilisateur IAM.

Exemple de stratégie de clé

L'exemple suivant illustre une stratégie de clé complète pour une clé KMS symétrique. Cette stratégie de clé combine les exemples de déclaration de stratégie issus de la section précédente Stratégie de clé par défaut en une stratégie de clé unique qui réalise les opérations suivantes :

  • Accorde au Compte AWS (utilisateur racine) 111122223333 l'accès complet à la clé KMS, et active donc les stratégies IAM dans le compte pour autoriser l'accès à la clé KMS.

  • Autorise l'utilisateur KMSAdminUser et le rôle IAM KMSAdminRole à administrer la clé KMS.

  • Autorise l'utilisateur IAM ExampleUser, le rôle IAM ExampleRole et Compte AWS 444455556666 à utiliser la clé KMS.

{ "Version": "2012-10-17", "Id": "key-consolepolicy-2", "Statement": [ { "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KMSAdminUser", "arn:aws:iam::111122223333:role/KMSAdminRole" ]}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/ExampleUser", "arn:aws:iam::111122223333:role/ExampleRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/ExampleUser", "arn:aws:iam::111122223333:role/ExampleRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": "true"}} } ] }