Partage de fichiers CloudTrail journaux entre AWS comptes - AWS CloudTrail

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Partage de fichiers CloudTrail journaux entre AWS comptes

Cette section explique comment partager des fichiers CloudTrail journaux entre plusieurs AWS comptes. L'approche que vous utilisez pour partager les journaux entre Comptes AWS eux dépend de la configuration de votre compartiment S3. Les options de partage des fichiers journaux sont les suivantes :

  • Propriétaire du compartiment imposé : la propriété d’objets S3 est un paramètre Amazon S3 au niveau des compartiments que vous pouvez utiliser pour contrôler la propriété des objets qui sont chargés dans votre compartiment, ainsi que pour désactiver ou activer les listes de contrôle d’accès (ACL). Par défaut, la propriété d’objets est définie sur le paramètre Propriétaire du compartiment imposé, et toutes les listes ACL sont désactivées. Lorsque les listes ACL sont désactivées, le propriétaire du compartiment détient tous les objets présents dans le compartiment et gère l’accès aux données exclusivement à l’aide de politiques de gestion des accès. Lorsque l’option Propriétaire du compartiment imposé est définie, l’accès est géré par le biais de la politique du compartiment, ce qui évite aux utilisateurs d’avoir à assumer un rôle.

  • Assumez un rôle pour partager des fichiers journaux : si vous n’avez pas choisi le paramètre Propriétaire du compartiment imposé, les utilisateurs devront assumer un rôle pour accéder aux fichiers journaux de votre compartiment S3.

Partager des fichiers journaux entre les comptes en assumant un rôle

Note

Cette section s’applique uniquement aux compartiments Amazon S3 qui n’utilisent pas le paramètre Propriétaire du compartiment imposé.

Cette section explique comment partager des fichiers CloudTrail journaux entre plusieurs personnes Comptes AWS en assumant un rôle et décrit les scénarios de partage de fichiers journaux.

  • Scénario 1 : accordez l’accès en lecture seule aux comptes qui ont généré les fichiers journaux qui ont été placés dans votre compartiment Amazon S3.

  • Scénario 2 : accordez l’accès à tous les fichiers journaux de votre compartiment Amazon S3 à un compte tiers qui peut analyser les fichiers journaux pour vous.

Pour accorder un accès en lecture seule aux fichiers journaux dans votre compartiment Amazon S3
  1. Créez un rôle IAM pour chaque compte avec lequel vous souhaitez partager les fichiers journaux. Vous devez être administrateur pour accorder une autorisation.

    Lorsque vous créez le rôle, procédez comme suit :

    • Choisissez l’option Un autre Compte AWS.

    • Entrez l’ID de compte à 12 chiffres du compte devant bénéficier d’un accès.

    • Cochez la case MFA requis si vous souhaitez que l’utilisateur fournissent une authentification multi-facteurs avant d’assumer le rôle.

    • Choisissez la politique Amazon S3 ReadOnlyAccess.

      Note

      Par défaut, la ReadOnlyAccess politique Amazon S3 accorde des droits de récupération et de liste à tous les compartiments Amazon S3 de votre compte.

    Pour plus de détails sur la gestion des autorisations pour les rôles IAM, consultez Rôles IAM dans le Guide de l’utilisateur IAM.

  2. Créez une stratégie d’accès qui accorde l’accès en lecture seule au compte avec lequel vous voulez partager les fichiers journaux.

  3. Demandez à chaque compte d’assumer un rôle pour récupérer des fichiers journaux.

Pour accorder un accès en lecture seule aux fichiers journaux avec un compte tiers
  1. Créez un rôle IAM pour chaque compte tiers avec lequel vous souhaitez partager les fichiers journaux. Vous devez être administrateur pour accorder une autorisation.

    Lorsque vous créez le rôle, procédez comme suit :

    • Choisissez l’option Un autre Compte AWS.

    • Entrez l’ID de compte à 12 chiffres du compte devant bénéficier d’un accès.

    • Entrez un ID externe qui fournit un contrôle supplémentaire concernant les personnes pouvant assumer le rôle. Pour plus d'informations, consultez la section Comment utiliser un identifiant externe pour accorder l'accès à vos AWS ressources à un tiers dans le guide de l'utilisateur IAM.

    • Choisissez la politique Amazon S3 ReadOnlyAccess.

      Note

      Par défaut, la ReadOnlyAccess politique Amazon S3 accorde des droits de récupération et de liste à tous les compartiments Amazon S3 de votre compte.

  2. Créez une stratégie d’accès qui accorde l’accès en lecture seule au compte tiers avec lequel vous voulez partager les fichiers journaux.

  3. Demandez au compte tiers d’assumer un rôle pour récupérer des fichiers journaux.

Les sections suivantes fournissent plus de détails sur ces étapes.

Création d’une stratégie d’accès pour accorder l’accès aux comptes que vous détenez

En tant que propriétaire du compartiment Amazon S3, vous avez le contrôle total du compartiment Amazon S3 dans lequel CloudTrail sont écrits les fichiers journaux des autres comptes. Vous souhaitez partager les fichiers journaux de chaque unité commerciale avec l’unité commerciale qui les a créés. Cependant, vous ne voulez pas qu’une unité puisse lire les fichiers journaux de n’importe quelle autre unité.

Par exemple, pour partager les fichiers journaux du compte B avec le compte B, mais pas avec le compte C, vous devez créer un nouveau rôle IAM dans votre compte qui spécifie que le compte B est un compte approuvé. Cette stratégie d’approbation de rôle spécifie que le compte B est approuvé pour assumer le rôle créé par votre compte ; elle doit ressembler à l’exemple suivant. La stratégie d’approbation est créée automatiquement si vous créez le rôle à l’aide de la console. Si vous utilisez le kit SDK pour créer le rôle, vous devez fournir la stratégie d’approbation en tant que paramètre de l’API CreateRole. Si vous utilisez la CLI pour créer le rôle, vous devez spécifier la stratégie d’approbation dans la commande de CLI create-role.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-B-id:root" }, "Action": "sts:AssumeRole" } ] }

Vous devez également créer une stratégie d’accès pour spécifier que le compte B peut lire uniquement l’emplacement dans lequel B a écrit ses fichiers journaux. La stratégie d’accès ressemblera à ce qui suit. Notez que l'ARN de la ressource inclut l'identifiant de compte à douze chiffres du compte B et le préfixe que vous avez spécifié, le cas échéant, lorsque vous avez activé le CloudTrail compte B pendant le processus d'agrégation. Pour plus d’informations sur la spécification d’un préfixe, consultez la page Créer des journaux de suivi dans des comptes supplémentaires.

Important

Vous devez vous assurer que le préfixe de la politique d'accès est exactement le même que celui que vous avez spécifié lorsque vous avez activé le compte B. Dans le cas contraire CloudTrail , vous devez modifier la politique d'accès aux rôles IAM de votre compte afin d'intégrer le préfixe réel du compte B. Si le préfixe de la politique d'accès aux rôles n'est pas exactement le même que celui que vous avez spécifié lorsque vous avez activé le compte B, le compte B ne pourra pas accéder CloudTrail à son journal fichiers.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/AWSLogs/account-B-id/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }

Utilisez la procédure précédente pour les éventuels comptes supplémentaires.

Après avoir créé des rôles pour chaque compte et spécifié les stratégies d’approbation et d’accès appropriées, et qu’un utilisateur IAM de chaque compte s’est vu attribuer des droits d’accès par l’administrateur de ce compte, un utilisateur IAM des comptes B ou C peut assumer le rôle par programmation.

Pour plus d’informations, consultez Endossement d'un rôle.

Création d'une stratégie d'accès pour accorder l'accès à un tiers

Vous devez créer un rôle IAM distinct pour un compte tiers. Lorsque vous créez le rôle, AWS créée automatiquement la relation d’approbation, ce qui spécifie que le compte tiers sera approuvé pour assumer le rôle. La stratégie d’accès pour le rôle spécifie les actions que le compte peut réaliser. Pour plus d’informations sur la création de rôles, consultez la page Création d’un rôle IAM.

Par exemple, la relation de confiance créée par AWS indique que le compte tiers (le compte Z dans cet exemple) est approuvé pour assumer le rôle que vous avez créé. Voici un exemple de politique d’approbation :

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole" }] }

Si vous avez spécifié un ID externe lorsque vous avez créé le rôle pour le compte tiers, votre stratégie d’accès contient un élément Condition ajouté qui teste l’ID unique affecté par le compte. Le test est effectué lorsque le rôle est assumé. L’exemple de stratégie d’accès suivant comporte un élément Condition.

Pour plus d'informations, consultez la section Comment utiliser un identifiant externe pour accorder l'accès à vos AWS ressources à un tiers dans le guide de l'utilisateur IAM.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"sts:ExternalId": "external-ID-issued-by-account-Z"}} }] }

Vous devez également créer une stratégie d’accès pour que votre compte spécifie que le compte tiers peut lire tous les journaux du compartiment Amazon S3. La stratégie d’accès doit ressembler à l’exemple suivant. Le caractère générique (*) à la fin de la valeur Resource indique que le compte tiers peut accéder à n’importe quel fichier journal dans le compartiment S3 auquel l’accès lui a été accordé.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }

Après avoir créé un rôle pour le compte tiers et précisé la relation d’approbation et la stratégie d’accès appropriées, un utilisateur IAM du compte tiers doit assumer le rôle par programmation pour pouvoir lire les fichiers journaux à partir du compartiment. Pour plus d’informations, consultez Endossement d'un rôle.

Endossement d'un rôle

Vous devez désigner un utilisateur IAM distinct pour endosser chaque rôle que vous créez dans chaque compte. Vous devez ensuite vous assurer que chaque utilisateur IAM dispose des autorisations appropriées.

Utilisateurs et rôles IAM

Une fois que vous avez créé les rôles et les politiques nécessaires, vous devez désigner un utilisateur IAM dans chacun des comptes avec lesquels vous souhaitez partager des fichiers. Chaque utilisateur IAM assume par programmation le rôle approprié pour accéder aux fichiers journaux. Lorsqu’un utilisateur assume un rôle, AWS renvoie des informations d’identification de sécurité temporaires à cet utilisateur. Il peut ensuite faire des demandes pour répertorier, récupérer, copier ou supprimer des fichiers journaux en fonction des autorisations accordées par la stratégie d’accès associée au rôle.

Pour obtenir plus d’informations sur les identités IAM, veuillez consulter la page Identités IAM (utilisateurs, groupes d’utilisateurs et rôles).

La principale différence est la stratégie d’accès que vous créez pour chaque rôle IAM dans chaque scénario.

Création de politiques d’autorisations pour les utilisateurs IAM

Pour effectuer les actions autorisées par un rôle, l'utilisateur IAM doit être autorisé à appeler l' AWS STS AssumeRoleAPI. Vous devez modifier la politique de chaque utilisateur pour lui accorder les autorisations appropriées. Pour ce faire, vous définissez un élément Ressource dans la politique que vous associez à l’utilisateur IAM. L’exemple suivant montre une politique pour un utilisateur IAM du compte qui autorise l’utilisateur à assumer un rôle nommé Test créé précédemment par le compte A.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::account-A-id:role/Test" } ] }
Pour modifier une politique gérée par le client (console)
  1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, choisissez Politiques.

  3. Dans la liste des politiques, choisissez le nom de la politique à modifier. Vous pouvez utiliser la zone de recherche pour filtrer la liste des politiques.

  4. Choisissez l'onglet Autorisations, puis Modifier.

  5. Effectuez l’une des actions suivantes :

    • Choisissez l'option Visuel pour modifier votre politique sans comprendre la syntaxe JSON. Vous pouvez apporter des modifications au service, aux ressources d’actions ou à des conditions facultatives pour chaque bloc d’autorisation de votre politique. Vous pouvez également importer une politique pour ajouter des autorisations supplémentaires au bas de votre politique. Lorsque vous avez fini d'apporter des modifications, choisissez Suivant pour continuer.

    • Choisissez l'option JSON pour modifier votre politique en tapant ou en collant du texte dans la zone de texte JSON. Vous pouvez également importer une politique pour ajouter des autorisations supplémentaires au bas de votre politique. Résolvez les avertissements de sécurité, les erreurs ou les avertissements généraux générés durant la validation de la politique, puis choisissez Suivant.

      Note

      Vous pouvez basculer à tout moment entre les options des éditeurs visuel et JSON. Toutefois, si vous apportez des modifications ou si vous choisissez Suivant dans l’éditeur visuel, IAM peut restructurer votre politique afin de l’optimiser pour l’éditeur visuel. Pour de plus amples informations, consultez la page Restructuration de politique dans le Guide de l’utilisateur IAM.

  6. Sur la page Vérifier et enregistrer, vérifiez les Autorisations définies dans cette politique, puis choisissez Enregistrer les modifications pour enregistrer votre travail.

  7. Si la politique gérée dispose déjà du maximum de cinq versions, une boîte de dialogue s'affiche lorsque vous choisissez Enregistrer les modifications. Pour enregistrer votre nouvelle version, la version la plus ancienne de la politique est supprimée et remplacée par cette nouvelle version. Vous pouvez choisir de définir la nouvelle version en tant que version par défaut de la politique.

    Choisissez Enregistrer les modifications pour enregistrer votre nouvelle version de la politique.

Appel AssumeRole

Un utilisateur peut assumer un rôle en créant une application qui appelle l' AWS STS AssumeRoleAPI et transmet le nom de session du rôle, le numéro de ressource Amazon (ARN) du rôle à assumer et un identifiant externe facultatif. Le nom de séance de rôle est défini par le compte qui a créé le rôle à assumer. L’ID externe, le cas échéant, est défini par le compte tiers et transmis au compte propriétaire pour qu’il soit inclus lors de la création d’un rôle. Pour plus d'informations, consultez la section Comment utiliser un identifiant externe pour accorder l'accès à vos AWS ressources à un tiers dans le guide de l'utilisateur IAM. Vous pouvez récupérer l’ARN du compte A en ouvrant la console IAM.

Pour rechercher la valeur de l’ARN du compte A avec la console IAM
  1. Sélectionnez Roles

  2. Choisissez le rôle que vous souhaitez examiner.

  3. Recherchez ARN du rôle dans la section Résumé.

L' AssumeRole API renvoie des informations d'identification temporaires à utiliser pour accéder aux ressources du compte propriétaire. Dans cet exemple, les ressources auxquelles vous souhaitez accéder sont le compartiment Amazon S3 et les fichiers journaux que contient le compartiment. Les informations d’identification temporaires disposent des autorisations que vous avez définies dans la stratégie d’accès du rôle.

L’exemple suivant de Python (qui utilise AWS SDK for Python (Boto)) montre comment appeler AssumeRole et comment utiliser les informations d’identification de sécurité temporaires renvoyées pour afficher tous les compartiments Amazon S3 contrôlés par le compte A.

def list_buckets_from_assumed_role(user_key, assume_role_arn, session_name): """ Assumes a role that grants permission to list the Amazon S3 buckets in the account. Uses the temporary credentials from the role to list the buckets that are owned by the assumed role's account. :param user_key: The access key of a user that has permission to assume the role. :param assume_role_arn: The Amazon Resource Name (ARN) of the role that grants access to list the other account's buckets. :param session_name: The name of the STS session. """ sts_client = boto3.client( "sts", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret ) try: response = sts_client.assume_role( RoleArn=assume_role_arn, RoleSessionName=session_name ) temp_credentials = response["Credentials"] print(f"Assumed role {assume_role_arn} and got temporary credentials.") except ClientError as error: print( f"Couldn't assume role {assume_role_arn}. Here's why: " f"{error.response['Error']['Message']}" ) raise # Create an S3 resource that can access the account with the temporary credentials. s3_resource = boto3.resource( "s3", aws_access_key_id=temp_credentials["AccessKeyId"], aws_secret_access_key=temp_credentials["SecretAccessKey"], aws_session_token=temp_credentials["SessionToken"], ) print(f"Listing buckets for the assumed role's account:") try: for bucket in s3_resource.buckets.all(): print(bucket.name) except ClientError as error: print( f"Couldn't list buckets for the account. Here's why: " f"{error.response['Error']['Message']}" ) raise

Arrêtez de partager les fichiers CloudTrail journaux entre les AWS comptes

Pour arrêter de partager des fichiers journaux avec un autre utilisateur Compte AWS, supprimez le rôle que vous avez créé pour ce compte. Pour plus d’informations sur la suppression d’un rôle, consultez la page Suppression de rôles ou de profils d’instance.