J'ai configuré mon compartiment Amazon Simple Storage Service (Amazon S3) pour utiliser le chiffrement par défaut avec une clé AWS Key Management Service (AWS KMS) gérée par le client. Je souhaite autoriser un utilisateur de Gestion des identités et des accès AWS (AWS IAM) à télécharger des objets depuis le compartiment et à y charger des objets.
Résolution
Tout d’abord, modifiez la stratégie de clé AWS KMS. Puis, modifiez la politique basée sur l'identité pour l'utilisateur IAM. Si l'utilisateur IAM possède un compte différent de celui du compartiment S3, vous devez également modifier la stratégie de compartiment.
Modifier la stratégie de clé
Procédez comme suit :
-
Ouvrez la console AWS KMS.
-
Dans le volet de navigation, choisissez Clés gérées par le client, puis sélectionnez votre clé dans la liste des clés.
-
Cliquez sur l'onglet Stratégie de clé pour afficher le document de politique.
Remarque : Si vous avez utilisé la console AWS KMS pour créer la clé gérée par le client, vous devez choisir Passer à la vue de stratégie dans l’onglet Stratégie de clé pour afficher le document de politique.
-
Choisissez Modifier, puis ajoutez l'instruction suivante à la stratégie de clé pour accorder les autorisations kms:GenerateDataKey et kms:Decrypt.
{
"Sid": "ExampleStmt",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/Jane"
},
"Resource": "*"
}
Remarque : L'exemple d’instruction de politique précédent inclut uniquement les autorisations minimales requises pour télécharger et charger des objets vers un compartiment S3 chiffré. Vous pouvez ajouter d'autres autorisations en fonction de votre cas d'utilisation.
Modifier la politique basée sur l'identité pour l'accès au même compte
Procédez comme suit :
-
Ouvrez la console IAM.
-
Attachez la politique suivante à l'utilisateur IAM afin qu'il puisse charger et télécharger des objets depuis le compartiment :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}
Remarque : Remplacez la valeur de Ressource par l'Amazon Resource Name (ARN) du compartiment. Le caractère générique (*) représente l'objet du compartiment.
Important : Une instruction Refuser explicite dans une stratégie de compartiment bloque les autorisations accordées par une politique basée sur l'identité. Examinez la stratégie de compartiment pour vous assurer qu'aucune instruction Refuser explicite n'entre en conflit avec la politique basée sur l'identité.
Modifier la politique basée sur l'identité et la stratégie de compartiment pour l'accès intercompte
Important : Vous pouvez accorder un accès intercompte pour une clé gérée par le client, mais pas pour une clé gérée par AWS. Vous ne pouvez pas modifier la stratégie de clé d'une clé gérée par AWS.
Procédez comme suit :
-
Ouvrez la console IAM dans le compte utilisateur IAM.
-
Attachez la politique suivante à l'utilisateur IAM afin qu'il puisse charger et télécharger des objets et utiliser la clé AWS KMS :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DownloadandUpload",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
},
{
"Sid": "ListBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
{
"Sid": "KMSAccess",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}
]
}
Remarque : Remplacez les valeurs Ressource par les ARN de votre compartiment et la clé AWS KMS. Le caractère générique (*) représente l'objet du compartiment.
-
Ouvrez la console Amazon SNS dans le compte propriétaire du compartiment S3.
-
Ajoutez l’instruction suivante à la stratégie de compartiment pour accorder à l'utilisateur IAM l'accès au compartiment :
{
"Id": "Policy1584399307003",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DownloadandUpload",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/Jane"
]
}
},
{
"Sid": "ListBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/Jane"
]
}
}
]
}
Remarque : Remplacez l'Id par l'ID de votre stratégie de compartiment, la valeur de Principal par l'ARN de l'utilisateur IAM et les valeurs de Ressource par les ARN de votre compartiment.
Outre les autorisations minimales requises pour l'accès intercompte, vous pouvez accorder l'autorisation s3:PutObjectAcl afin que l'utilisateur IAM puisse définir la liste de contrôle d'accès (ACL) pour un objet. Puis, accordez la liste ACL prédéfinie bucket-owner-full-control au compte du compartiment. Vous pouvez également accorder l'autorisation s3:ListBucket requise pour synchroniser les répertoires ou les préfixes S3 et copier des objets entre les compartiments.
Informations connexes
Activer et désactiver les clés
Utilisation des politiques IAM avec AWS KMS
Accorder un accès en lecture et en écriture aux objets du compartiment Amazon S3
Désactivation des ACL pour tous les nouveaux compartiments et application de la propriété d’objets