Accès intercompte à S3 Access Grants - Amazon Simple Storage Service

Accès intercompte à S3 Access Grants

Avec S3 Access Grants, vous pouvez accorder l’accès aux données Amazon S3 aux éléments suivants :

  • Identités Gestion des identités et des accès AWS (IAM) au sein de votre compte

  • Identités IAM dans d’autres comptes AWS

  • Utilisateurs ou groupes issus d’annuaires dans votre instance AWS IAM Identity Center

Configurez d’abord l’accès intercompte pour l’autre compte. Cela inclut l’octroi de l’accès à votre instance S3 Access Grants à l’aide d’une politique de ressources. Accordez ensuite l’accès à vos données S3 (compartiments, préfixes ou objets) en utilisant des autorisations.

Après avoir configuré l’accès intercompte, l’autre compte peut demander des informations d’accès temporaires à vos données Amazon S3 auprès de S3 Access Grants. L’image suivante montre le flux d’utilisateurs pour l’accès intercompte S3 via S3 Access Grants :

Flux utilisateur intercompte avec S3 Access Grants
  1. Les utilisateurs ou les applications d’un deuxième compte (B) demandent des informations d’identification à l’instance S3 Access Grants de votre compte (A), où les données Amazon S3 sont stockées. Pour plus d’informations, consultez Demande d’un accès aux données Amazon S3 via S3 Access Grants.

  2. L’instance S3 Access Grants de votre compte (A) renvoie des informations d’identification temporaires si une autorisation permet au deuxième compte d’accéder à vos données Amazon S3. Pour plus d’informations sur les autorisations d’accès, consultez Octroi d’autorisations avec S3 Access Grants.

  3. Les utilisateurs ou les applications du second compte (B) utilisent les informations d’identification fournies par S3 Access Grants pour accéder aux données S3 de votre compte (A).

Configuration de l’accès intercompte avec S3 Access Grants

Pour accorder un accès S3 intercompte via S3 Access Grants, procédez comme suit :

  • Étape 1 : configurez une instance S3 Access Grants dans votre compte (par exemple, l’ID de compte 111122223333), où les données S3 sont stockées.

  • Étape 2 : configurez la politique de ressources pour l’instance S3 Access Grants de votre compte 111122223333 afin de donner accès au deuxième compte (par exemple, l’ID de compte 444455556666).

  • Étape 3 : configurez les autorisations IAM pour que le principal IAM du deuxième compte 444455556666 demande des informations d’identification à l’instance S3 Access Grants de votre compte 111122223333.

  • Étape 4 : créez une autorisation dans votre compte 111122223333 qui donne au principal IAM du deuxième compte 444455556666 l’accès à certaines des données S3 de votre compte 111122223333.

Étape 1 : configurer une instance S3 Access Grants dans votre compte

Tout d’abord, vous devez disposer d’une instance S3 Access Grants dans votre compte 111122223333 pour gérer l’accès à vos données Amazon S3. Vous devez créer une instance S3 Access Grants dans chaque Région AWS où sont stockées les données S3 que vous souhaitez partager. Si vous partagez des données dans plus d’une Région AWS, répétez chacune de ces étapes de configuration pour chaque Région AWS. Si vous avez déjà une instance S3 Access Grants dans le Région AWS dans lequel vos données S3 sont stockées, passez à l’étape suivante. Si vous n’avez pas configuré d’instance S3 Access Grants, consultez Utilisation de S3 Access Grants pour mener à bien cette étape.

Étape 2 : configurer la politique de ressource pour votre instance S3 Access Grants afin d’accorder un accès intercompte

Après avoir créé une instance S3 Access Grants dans votre compte 111122223333 pour un accès intercompte, configurez la politique basée sur les ressources pour l’instance S3 Access Grants de votre compte 111122223333 afin d’accorder un accès intercompte. L’instance S3 Access Grants elle-même prend en charge les politiques basées sur les ressources. Avec la politique basée sur les ressources appropriée, vous pouvez accorder à des utilisateurs et à des rôles Gestion des identités et des accès AWS (IAM) issus d’autres Comptes AWS l’accès à votre instance S3 Access Grants. L’accès intercompte accorde uniquement ces autorisations (actions) :

  • s3:GetAccessGrantsInstanceForPrefix : l’utilisateur, le rôle ou l’application peut récupérer l’instance S3 Access Grants qui contient un préfixe particulier.

  • s3:ListAccessGrants

  • s3:ListAccessLocations

  • s3:ListCallerAccessGrants

  • s3:GetDataAccess : l’utilisateur, le rôle ou l’application peut demander des informations d’identification temporaires en fonction de l’accès qui vous a été accordé via S3 Access Grants. Utilisez ces informations d’identification pour accéder aux données S3 auxquelles l’accès vous a été accordé.

Parmi ces autorisations, vous pouvez choisir les autorisations à inclure dans la politique de ressources. Cette politique de ressources sur l’instance S3 Access Grants est une politique standard basée sur les ressources et prend en charge tout ce que le langage de politique IAM prend en charge. Dans la même politique, vous pouvez accorder l’accès à des identités IAM spécifiques dans le compte 111122223333 (par exemple, avec la condition aws:PrincipalArn), mais vous n’êtes pas obligé de le faire avec S3 Access Grants. À la place, au sein de votre instance S3 Access Grants, vous pouvez créer des autorisations pour des identités IAM individuelles à partir de votre compte, ainsi que pour l’autre compte. En gérant chaque autorisation d’accès via S3 Access Grants, vous pouvez mettre à l’échelle vos autorisations.

Si vous utilisez déjà AWS Resource Access Manager (AWS RAM), vous pouvez y recourir pour partager vos ressources s3:AccessGrants avec d’autres comptes ou au sein de votre organisation. Consultez Utilisation des ressources AWS partagées pour plus d’informations. Si vous n’utilisez pas AWS RAM, vous pouvez également ajouter la politique de ressources en utilisant les opérations d’API de S3 Access Grants ou l’AWS Command Line Interface (AWS CLI).

Nous vous recommandons d’utiliser la console AWS Resource Access Manager (AWS RAM) pour partager vos ressources s3:AccessGrants avec d’autres comptes ou au sein de votre organisation. Pour partager les autorisations S3 Access Grants intercomptes, procédez comme suit :

Pour configurer la politique de ressources de l’instance S3 Access Grants :
  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l’adresse https://console.aws.amazon.com/s3/.

  2. Sélectionnez la Région AWS dans le sélecteur de Région AWS.

  3. Dans le volet de navigation de gauche, sélectionnez Access Grants.

  4. Sur la page de l’instance Access Grants, dans la section Instance dans ce compte, sélectionnez Partager une instance. Vous êtes redirigé vers la console AWS RAM.

  5. Sélectionnez Créer un partage de ressources.

  6. Suivez les étapes AWS RAM pour créer le partage de ressources. Pour plus d’informations, consultez Création d’un partage de ressources dans AWS RAM.

Pour installer la AWS CLI, consultez Installation de la AWS CLI dans le Guide de l’utilisateur AWS Command Line Interface.

Vous pouvez ajouter la politique de ressources à l’aide de la commande CLI put-access-grants-instance-resource-policy.

Si vous souhaitez accorder un accès intercompte pour l’instance S3 Access Grants se trouvant dans votre compte 111122223333 au deuxième compte 444455556666, la politique de ressources de l’instance S3 Access Grants de votre compte 111122223333 doit autoriser le deuxième compte 444455556666 à effectuer les actions suivantes :

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Dans la politique de ressources de l’instance S3 Access Grants, spécifiez l’ARN de votre instance S3 Access Grants comme Resource, et le deuxième compte 444455556666 comme Principal. Pour utiliser l’exemple suivant, remplacez les espaces réservés à la saisie utilisateur par vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Pour ajouter ou mettre à jour une politique de ressources pour une instance S3 Access Grants, utilisez la commande suivante. Lorsque vous utilisez l’exemple de commande suivant, remplacez les user input placeholders par vos propres informations.

Exemple Ajout ou mise à jour de la politique de ressources pour une instance S3 Access Grants
aws s3control put-access-grants-instance-resource-policy \ --account-id 111122223333 \ --policy file://resourcePolicy.json \ --region us-east-2 { "Policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"444455556666\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\",\n \"s3:GetAccessGrantsInstanceForPrefix\",\n \"s3:ListCallerAccessGrants"\n ],\n \"Resource\": \"arn:aws:s3:us-east-2:111122223333:access-grants/default\"\n }\n ]\n }\n", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
Exemple Obtenir une politique de ressources S3 Access Grants

Vous pouvez également utiliser l’interface de ligne de commande pour obtenir ou supprimer une politique de ressources pour une instance S3 Access Grants.

Pour obtenir une politique de ressources S3 Access Grants, utilisez l’exemple de commande suivant. Pour utiliser cet exemple de commande, remplacez user input placeholders par vos propres informations.

aws s3control get-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 { "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:root\"},\"Action\":[\"s3:ListAccessGrants\",\"s3:ListAccessGrantsLocations\",\"s3:GetDataAccess\",\"s3:GetAccessGrantsInstanceForPrefix\",\"s3:ListCallerAccessGrants\"],\"Resource\":\"arn:aws: s3:us-east-2:111122223333:access-grants/default\"}]}", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
Exemple Supprimer une politique de ressources S3 Access Grants

Pour supprimer une politique de ressources S3 Access Grants, utilisez l’exemple de commande suivant. Pour utiliser cet exemple de commande, remplacez user input placeholders par vos propres informations.

aws s3control delete-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 // No response body

Vous pouvez ajouter la politique de ressources à l’aide de l’API PutAccessGrantsInstanceResourcePolicy.

Si vous souhaitez accorder un accès intercompte pour l’instance S3 Access Grants se trouvant dans votre compte 111122223333 au deuxième compte 444455556666, la politique de ressources de l’instance S3 Access Grants de votre compte 111122223333 doit autoriser le deuxième compte 444455556666 à effectuer les actions suivantes :

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Dans la politique de ressources de l’instance S3 Access Grants, spécifiez l’ARN de votre instance S3 Access Grants comme Resource, et le deuxième compte 444455556666 comme Principal. Pour utiliser l’exemple suivant, remplacez les espaces réservés à la saisie utilisateur par vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Vous pouvez ensuite utiliser l’API PutAccessGrantsInstanceResourcePolicy pour configurer la politique.

Pour plus d’informations sur la prise en charge de l’API REST pour mettre à jour, obtenir ou supprimer une instance S3 Access Grants, consultez les sections suivantes dans la Référence des API Amazon Simple Storage Service :

Cette section fournit des exemples de kit AWS SDK expliquant comment configurer votre politique de ressources S3 Access Grants afin d’accorder à un deuxième compte AWS l’accès à certaines de vos données S3.

Java

Ajoutez, mettez à jour, obtenez ou supprimez une politique de ressources pour gérer l’accès intercompte à votre instance S3 Access Grants.

Exemple Ajout ou mise à jour d’une politique de ressources pour une instance S3 Access Grants

Si vous souhaitez accorder un accès intercompte pour l’instance S3 Access Grants se trouvant dans votre compte 111122223333 au deuxième compte 444455556666, la politique de ressources de l’instance S3 Access Grants de votre compte 111122223333 doit autoriser le deuxième compte 444455556666 à effectuer les actions suivantes :

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Dans la politique de ressources de l’instance S3 Access Grants, spécifiez l’ARN de votre instance S3 Access Grants comme Resource, et le deuxième compte 444455556666 comme Principal. Pour utiliser l’exemple suivant, remplacez les espaces réservés à la saisie utilisateur par vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Pour ajouter ou mettre à jour la politique de ressources d’une instance S3 Access Grants, utilisez l’exemple de code suivant :

public void putAccessGrantsInstanceResourcePolicy() { PutAccessGrantsInstanceResourcePolicyRequest putRequest = PutAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .policy(RESOURCE_POLICY) .build(); PutAccessGrantsInstanceResourcePolicyResponse putResponse = s3Control.putAccessGrantsInstanceResourcePolicy(putRequest); LOGGER.info("PutAccessGrantsInstanceResourcePolicyResponse: " + putResponse); }

Réponse :

PutAccessGrantsInstanceResourcePolicyResponse( Policy={ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix", "s3:ListCallerAccessGrants" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" }] } )
Exemple Obtenir une politique de ressources S3 Access Grants

Pour obtenir une politique de ressources S3 Access Grants, utilisez l’exemple de code suivant. Pour utiliser l’exemple de commande suivant, remplacez les user input placeholders par vos propres informations.

public void getAccessGrantsInstanceResourcePolicy() { GetAccessGrantsInstanceResourcePolicyRequest getRequest = GetAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); GetAccessGrantsInstanceResourcePolicyResponse getResponse = s3Control.getAccessGrantsInstanceResourcePolicy(getRequest); LOGGER.info("GetAccessGrantsInstanceResourcePolicyResponse: " + getResponse); }

Réponse :

GetAccessGrantsInstanceResourcePolicyResponse( Policy={"Version": "2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::444455556666:root"},"Action":["s3:ListAccessGrants","s3:ListAccessGrantsLocations","s3:GetDataAccess","s3:GetAccessGrantsInstanceForPrefix","s3:ListCallerAccessGrants"],"Resource":"arn:aws:s3:us-east-2:111122223333:access-grants/default"}]}, CreatedAt=2023-06-15T22:54:44.319Z )
Exemple Supprimer une politique de ressources S3 Access Grants

Pour supprimer une politique de ressources S3 Access Grants, utilisez l’exemple de code suivant. Pour utiliser l’exemple de commande suivant, remplacez les user input placeholders par vos propres informations.

public void deleteAccessGrantsInstanceResourcePolicy() { DeleteAccessGrantsInstanceResourcePolicyRequest deleteRequest = DeleteAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); DeleteAccessGrantsInstanceResourcePolicyResponse deleteResponse = s3Control.putAccessGrantsInstanceResourcePolicy(deleteRequest); LOGGER.info("DeleteAccessGrantsInstanceResourcePolicyResponse: " + deleteResponse); }

Réponse :

DeleteAccessGrantsInstanceResourcePolicyResponse()

Étape 3 : accorder aux identités IAM d’un deuxième compte l’autorisation d’appeler l’instance S3 Access Grants de votre compte

Une fois que le propriétaire des données Amazon S3 a configuré la politique intercompte pour l’instance S3 Access Grants dans le compte 111122223333, le propriétaire du deuxième compte 444455556666 doit créer une politique basée sur l’identité pour ses utilisateurs ou rôles IAM, et le propriétaire doit leur donner accès à l’instance S3 Access Grants. Dans la politique basée sur l’identité, incluez une ou plusieurs des actions suivantes, en fonction de ce qui est accordé dans la politique de ressources d’instance S3 Access Grants et des autorisations que vous souhaitez accorder :

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

  • s3:ListCallerAccessGrants

Selon le modèle d’accès intercompte AWS, les utilisateurs ou rôles IAM du deuxième compte 444455556666 doivent explicitement disposer d’une ou de plusieurs de ces autorisations. Par exemple, accordez l’autorisation s3:GetDataAccess afin que l’utilisateur ou le rôle IAM puisse appeler l’instance S3 Access Grants associée au compte 111122223333 pour demander des informations d’identification.

Pour utiliser cet exemple de commande, remplacez user input placeholders par vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetDataAccess", ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Pour plus d’informations sur la modification d’une politique basée sur l’identité IAM, consultez Modification des politiques IAM dans le Guide Gestion des identités et des accès AWS.

Étape 4 : créer une autorisation dans l’instance S3 Access Grants de votre compte qui donne à l’identité IAM du deuxième compte l’accès à certaines de vos données S3

Pour l’étape finale de configuration, vous pouvez créer une autorisation dans l’instance S3 Access Grants de votre compte 111122223333, qui donne accès à l’identité IAM du deuxième compte 444455556666 à certaines données S3 de votre compte. Pour ce faire, utilisez la console, l’interface de ligne de commande, l’API ou les kits SDK Amazon S3. Pour plus d’informations, consultez Création d’octrois.

Dans l’autorisation, spécifiez l’ARN AWS de l’identité IAM du deuxième compte et spécifiez l’emplacement dans lequel vous accordez l’accès à vos données S3 (compartiment, préfixe ou objet). Cet emplacement doit déjà être enregistré auprès de votre instance S3 Access Grants. Pour plus d’informations, consultez Enregistrement d’un emplacement. Vous pouvez la possibilité de spécifier un sous-préfixe. Par exemple, si l’emplacement auquel vous accordez l’accès est un compartiment et que vous souhaitez limiter davantage l’accès à un objet spécifique de ce compartiment, transmettez le nom de la clé de l’objet dans le champ S3SubPrefix. Ou si vous souhaitez limiter l’accès aux objets du compartiment dont les noms de clé commencent par un préfixe spécifique tel que 2024-03-research-results/, transmettez S3SubPrefix=2024-03-research-results/.

Voici un exemple de commande CLI permettant de créer une autorisation d’accès pour une identité dans le deuxième compte. Pour plus d’informations, consultez Création d’octrois. Pour utiliser cet exemple de commande, remplacez user input placeholders par vos propres informations.

aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix=prefixA* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::444455556666:role/data-consumer-1

Après avoir configuré l’accès intercompte, l’utilisateur ou le rôle du deuxième compte peut effectuer les opérations suivantes :