Comment accéder à un compartiment d'un autre compte à l'aide d'un point d'accès S3 restreint à un VPC ?

Lecture de 5 minute(s)
0

Je possède une entité et un compartiment AWS Identity and Access Management (IAM) sur différents comptes AWS. Je souhaite accorder à l'entité IAM un accès intercompte au compartiment à l'aide d'un point d'accès Amazon Simple Storage Service (Amazon S3) restreint à un Amazon Virtual Private Cloud (Amazon VPC).

Résolution

Pour accorder à un rôle IAM ou à un utilisateur d'un compte AWS (compte A) l'accès à un compartiment Amazon S3 d'un autre compte AWS (compte B) à l'aide d'un point d'accès S3 restreint à un Amazon VPC, procédez comme suit :

  1. Créez et attachez un point d'accès Amazon S3 au compartiment dans le compte B.
  2. Créez un point de terminaison Amazon S3 VPC Gateway dans le compte A.
  3. Attachez les politiques relatives au point d'accès, au compartiment et à l'IAM.

Créez et attachez un point d'accès Amazon S3 au compartiment du compte B

  1. Ouvrez la console Amazon S3.
  2. Dans le panneau de navigation, choisissez Access Points (Points d’accès).
  3. Choisissez Create access point (Créer un point d'accès).
  4. DansAccess point name (Nom du point d’accès), entrez un nom pour le point d'accès. Pour plus d'informations, consultez la section Règles de dénomination des points d'accès Amazon S3.
  5. Pour Bucket name (Nom du compartiment), entrez le nom du compartiment du compte B auquel vous souhaitez associer le point d'accès.
  6. Choisissez Virtual Private Cloud (VPC) pour Network Origin (Origine du réseau).
  7. Pour VPC ID, entrez l'ID de VPC du premier compte AWS (compte A).
  8. Sous Block Public Access settings for this Access Point (Bloquer les paramètres d'accès public pour ce point d'accès), choisissez les paramètres de blocage de l'accès public que vous souhaitez appliquer au point d'accès. 
    Remarque : Amazon S3 ne prend actuellement pas en charge la modification des paramètres d'accès public de blocage d'un point d'accès après la création du point d'accès.
  9. Laissez Access Point policy (politique relative aux points d'accès) vide.
  10. Choisissez Create access point (Créer un point d'accès).

Créez un point de terminaison Amazon S3 VPC Gateway dans le compte A

Créez un point de terminaison VPC S3 Gateway dans le compte AWS initial (compte A) dans la même région que le compartiment auquel vous accordez l'accès intercompte.

  1. Ouvrez la console Amazon VPC.
  2. Dans le panneau de navigation, choisissez Points de terminaison.
  3. Choisissez Create endpoint (Créer un point de terminaison).
  4. Dans Service category (Catégorie de services), sélectionnez AWS services (Services AWS).
  5. Pour les services, ajoutez le filtre Type: Gateway (Type : passerelle) et sélectionnez la même région que celle utilisée pour créer le point d'accès.
  6. Pour le VPC, choisissez le même VPC que celui utilisé pour créer le point d'accès.
  7. Pour Route tables (Tables de routage), choisissez les tables de routage à utiliser par le point de terminaison.
  8. Choisissez la politique Full access (Accès complet). Vous pouvez également choisirCustom (Personnalisé) et vous assurer que la politique autorise les actions S3 requises.

Remarque : Les points de terminaison de passerelle n'autorisent pas l'accès depuis d'autres régions AWS. Vous trouverez ci-dessous un exemple de politique de point de terminaison VPC qui autorise toutes les actions S3 sur tous les compartiments :

{
 "Version": "2012-10-17",
 "Statement": [{
  "Effect": "Allow",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:*"
 }]
}

Attachez les politiques relatives au point d'accès, au compartiment et à l'IAM

Pour autoriser à l'entité IAM du compte AWS initial (compte A) l’accès intercomptes au compartiment de l'autre compte AWS (compte B) via le point d'accès, vous devez accorder des autorisations à partir du point d'accès, du compartiment et des politiques IAM. Vous trouverez ci-dessous les politiques qui accordent les autorisations requises pour chacun d'entre eux.

Politique de point d’accès :

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "DelegateControlToAccessPoint",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-acess-point/object/*",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
  ]
 }]
}

Remarque : Cette politique accorde à l'utilisateur ou au rôle IAM du compte AWS source (compte A) l'autorisation d'accéder au point d'accès du compte AWS cible (compte B).

Politique de compartiment:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccess",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:GetObject",
   "s3:ListBucket",
   "s3:PutObject"
  ],
  "Resource": [
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ],
  "Condition": {
   "StringEquals": {
    "s3:DataAccessPointArn": "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
   }
  }
 }]
}

Remarque : Cette politique accorde à l'utilisateur IAM du compte AWS source (compte A) l'autorisation d'accéder au compartiment (compte B) en utilisant le point d'accès.

Politique IAM : 

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccessToBucketAndAP",
  "Effect": "Allow",
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point/object/*",
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ]
 }]
}

Remarque : Cette politique IAM associée au rôle IAM ou à l'utilisateur du compte AWS source (compte A) accorde l’autorisation au compartiment et au point d'accès du compte AWS cible (compte B).

Exemples de commandes de la CLI AWS pour effectuer des opérations S3 sur le compartiment à l'aide du point d'accès :

Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente de l'AWS CLI.

Liste :

aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Télécharger :

aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Téléchargement :

aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt

Remarque : La demande doit provenir d'une instance Amazon Elastic Compute Cloud (Amazon EC2) dans le VPC et située dans la même région que le compartiment.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an