CloudTrail Protokolldateien zwischen AWS Konten teilen - AWS CloudTrail

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CloudTrail Protokolldateien zwischen AWS Konten teilen

In diesem Abschnitt wird erklärt, wie CloudTrail Protokolldateien zwischen mehreren AWS Konten gemeinsam genutzt werden können. Welchen Ansatz Sie verwenden, um Logs gemeinsam zu nutzen, AWS-Konten hängt von der Konfiguration Ihres S3-Buckets ab. Dies sind die Optionen für das Freigeben von Protokolldateien:

  • Bucket-Besitzer erzwungenS3 Object Ownership ist eine Einstellung auf Amazon S3 S3-Bucket-Ebene, mit der Sie den Besitz von Objekten kontrollieren können, die in Ihren Bucket hochgeladen wurden, und um Zugriffskontrolllisten zu deaktivieren oder zu aktivieren (). ACLs Standardmäßig ist für Object Ownership die Einstellung Bucket Owner erforced festgelegt und alle Funktionen sind deaktiviert. ACLs Wenn ACLs diese Option deaktiviert ist, besitzt der Bucket-Besitzer alle Objekte im Bucket und verwaltet den Zugriff auf Daten ausschließlich mithilfe von Zugriffsverwaltungsrichtlinien. Wenn die Option Bucket-Eigentümer erzwungen aktiviert ist, wird der Zugriff über die Bucket-Richtlinie verwaltet, sodass Benutzer keine Rolle übernehmen müssen.

  • Rolle für die gemeinsame Nutzung von Protokolldateien annehmen – Wenn Sie die Einstellung Bucket-Eigentümer erzwungen nicht ausgewählt haben, müssen Benutzer eine Rolle übernehmen, um auf die Protokolldateien in Ihrem S3-Bucket zugreifen zu können.

Freigeben von Protokolldateien zwischen Konten durch Annehmen einer Rolle

Anmerkung

Dieser Abschnitt gilt nur für Amazon-S3-Buckets, die nicht die Einstellung Bucket-Eigentümer erzwungen verwenden.

In diesem Abschnitt wird erklärt, wie Sie CloudTrail Protokolldateien gemeinsam nutzen können, AWS-Konten indem Sie eine Rolle übernehmen, und es werden die Szenarien für die gemeinsame Nutzung von Protokolldateien beschrieben.

  • Szenario 1: Gewähren Sie den schreibgeschützten Zugriff für die Konten, von denen die Protokolldateien generiert wurden, die sich im Amazon-S3-Bucket befinden.

  • Szenario 2: Gewähren Sie einem Drittanbieter-Konto Zugriff auf alle Protokolldateien in Ihrem Amazon-S3-Bucket, das die Protokolldateien für Sie analysieren kann.

So gewähren Sie schreibgeschützten Zugriff auf die Protokolldateien in Ihrem Amazon-S3-Bucket
  1. Erstellen Sie eine IAM Rolle für jedes Konto, mit dem Sie Protokolldateien teilen möchten. Sie müssen ein Administrator sein, um die Berechtigung zu gewähren.

    Gehen Sie wie folgt vor, wenn Sie die VPC erstellen:

    • Wählen Sie die Option Anderes AWS-Konto.

    • Geben Sie die zwölfstellige Konto-ID des Kontos ein, dem Zugriff gewährt werden soll.

    • Markieren Sie das MFA Kästchen Erforderlich, wenn Sie möchten, dass der Benutzer eine Multi-Faktor-Authentifizierung durchführt, bevor er die Rolle übernimmt.

    • Wählen Sie die AmazonS3-Richtlinie aus. ReadOnlyAccess

      Anmerkung

      Standardmäßig gewährt die ReadOnlyAccessAmazonS3-Richtlinie Abruf- und Listenrechte für alle Amazon S3 S3-Buckets in Ihrem Konto.

    Einzelheiten zur Rechteverwaltung für IAM Rollen finden Sie unter IAMRollen im Benutzerhandbuch. IAM

  2. Erstellen Sie eine Zugriffsrichtlinie, die dem Konto, für das Sie die Protokolldateien freigeben möchten, schreibgeschützten Zugriff gewährt.

  3. Weisen Sie jedes Konto an, eine Rolle beim Abrufen der Protokolldateien anzunehmen.

So gewähren Sie einem Drittanbieter-Konto schreibgeschützten Zugriff auf die Protokolldateien
  1. Erstellen Sie eine IAM Rolle für das Drittanbieter-Konto, mit dem Sie Protokolldateien teilen möchten. Sie müssen ein Administrator sein, um die Berechtigung zu gewähren.

    Gehen Sie wie folgt vor, wenn Sie die VPC erstellen:

    • Wählen Sie die Option Anderes AWS-Konto.

    • Geben Sie die zwölfstellige Konto-ID des Kontos ein, dem Zugriff gewährt werden soll.

    • Geben Sie eine externe ID an, mit der zusätzlich kontrolliert wird, wer die Rolle übernehmen kann. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter So verwenden Sie eine externe ID, wenn Sie Dritten Zugriff auf Ihre AWS Ressourcen gewähren.

    • Wählen Sie die AmazonS3-Richtlinie aus ReadOnlyAccess.

      Anmerkung

      Standardmäßig gewährt die ReadOnlyAccessAmazonS3-Richtlinie Abruf- und Listenrechte für alle Amazon S3 S3-Buckets in Ihrem Konto.

  2. Erstellen Sie eine Zugriffsrichtlinie, die dem Drittanbieter-Konto, für das Sie die Protokolldateien freigeben möchten, schreibgeschützten Zugriff gewährt.

  3. Weisen Sie das Drittanbieter-Konto an, eine Rolle beim Abrufen der Protokolldateien anzunehmen.

In den folgenden Abschnitten erhalten Sie weitere Informationen zu diesen Schritten.

Erstellen einer vordefinierten Zugriffsrichtlinie, um Zugriff auf Konten, deren Inhaber Sie sind, zu gewähren

Als Besitzer des Amazon S3 S3-Buckets haben Sie die volle Kontrolle über den Amazon S3 S3-Bucket, in den Protokolldateien für die anderen Konten CloudTrail geschrieben werden. Sie möchten die Protokolldateien mit jeder Geschäftseinheit gemeinsam nutzen, die sie erstellt hat. Aber Sie möchten nicht, dass ein Geschäftsbereich die Protokolldateien eines anderen Geschäftsbereichs lesen kann.

Um beispielsweise die Protokolldateien von Konto B mit Konto B, aber nicht mit Konto C zu teilen, müssen Sie in Ihrem Konto eine neue IAM Rolle erstellen, die angibt, dass Konto B ein vertrauenswürdiges Konto ist. Diese rollenbasierte Vertrauensrichtlinie gibt an, dass Konto B vertrauenswürdig ist, die von Ihrem Konto erstellte Rolle zu übernehmen, und sollte wie im folgenden Beispiel aussehen. Die Vertrauensrichtlinie wird automatisch erstellt, wenn Sie die Rolle mithilfe der Konsole anlegen. Wenn Sie die Rolle SDK mit erstellen, müssen Sie die Vertrauensrichtlinie als Parameter für angeben CreateRoleAPI. Wenn Sie die Rolle CLI mit erstellen, müssen Sie die Vertrauensrichtlinie im create-role CLI Befehl angeben.

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

Außerdem müssen Sie eine vordefinierte Zugriffsrichtlinie erstellen, um festzulegen, dass Konto B nur von dem Speicherort aus lesen kann, in den das Konto B die Protokolldateien schreibt. Die vordefinierte Zugriffsrichtlinie wird in etwa wie folgt aussehen. Beachten Sie, dass die Ressource die zwölfstellige Konto-ID für Konto B und gegebenenfalls das Präfix ARN enthält, das Sie bei der Aktivierung CloudTrail für Konto B während des Aggregationsprozesses angegeben haben. Weitere Informationen zur Angabe eines Präfixes finden Sie unter Erstellen von Trails in zusätzlichen Konten.

Wichtig

Sie müssen sicherstellen, dass das Präfix in der Zugriffsrichtlinie genau mit dem Präfix übereinstimmt, das Sie bei der Aktivierung CloudTrail für Konto B angegeben haben. Ist dies nicht der Fall, müssen Sie die IAM Rollenzugriffsrichtlinie in Ihrem Konto bearbeiten, um das tatsächliche Präfix für Konto B aufzunehmen. Wenn das Präfix in der Rollenzugriffsrichtlinie nicht genau dem Präfix entspricht, das Sie bei der Aktivierung CloudTrail in Konto B angegeben haben, kann Konto B nicht auf dessen Protokolldateien zugreifen.

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

Verwenden Sie diesen Vorgang für alle weiteren Konten.

Nachdem Sie Rollen für jedes Konto erstellt und die entsprechenden Vertrauens- und Zugriffsrichtlinien angegeben haben und nachdem einem IAM Benutzer in jedem Konto vom Administrator dieses Kontos Zugriff gewährt wurde, kann ein IAM Benutzer der Konten B oder C die Rolle programmgesteuert übernehmen.

Weitere Informationen finden Sie unter Übernehmen einer Rolle.

Erstellen einer vordefinierten Zugriffsrichtlinie für den Zugriff für Dritte

Sie müssen eine separate IAM Rolle für ein Drittanbieterkonto erstellen. Wenn Sie die Rolle erstellen, erstellt AWS automatisch die Vertrauensbeziehung, die angibt, dass das Drittanbieter-Konto die Rolle übernehmen darf. Die vordefinierte Zugriffsrichtlinie für die Rolle gibt an, welche Aktionen dieses Konto durchführen kann. Weitere Informationen zum Erstellen von Rollen finden Sie unter IAMRolle erstellen.

Die von erstellte Vertrauensstellung AWS gibt beispielsweise an, dass dem Drittanbieterkonto (in diesem Beispiel Konto Z) die von Ihnen erstellte Rolle als vertrauenswürdig eingestuft wird. Im Folgenden finden Sie ein Beispiel für eine Vertrauensrichtlinie:

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

Wenn Sie bei der Erstellung der Rolle für das Drittanbieter-Konto eine externe ID angegeben haben, enthält Ihre Zugriffsrichtlinie ein zusätzliches Condition-Element, das die von diesem Konto zugewiesene eindeutige ID testet. Der Test wird durchgeführt, wenn die Rolle übernommen wird. Im folgenden Beispiel umfasst die Zugriffsrichtlinie ein Element Condition.

Weitere Informationen finden Sie im IAMBenutzerhandbuch unter So verwenden Sie eine externe ID, wenn Sie Dritten Zugriff auf Ihre AWS Ressourcen gewähren.

{ "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"}} }] }

Sie müssen auch eine vordefinierte Zugriffsrichtlinie für die Rolle Ihres Kontos erstellen, um festzulegen, dass das Drittanbieter-Konto alle Protokolle im Amazon-S3-Bucket lesen kann. Die Zugriffsrichtlinie sollte etwa wie im folgenden Beispiel dargestellt aussehen. Der Platzhalter (*) am Ende des Resource-Wertes gibt an, dass das Drittanbieter-Konto auf alle Protokolldateien im S3-Bucket zugreifen kann, für die ihm Zugriff erteilt wurde.

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

Nachdem Sie eine Rolle für das Drittanbieterkonto erstellt und die entsprechende Vertrauensbeziehung und Zugriffsrichtlinie angegeben haben, muss ein IAM Benutzer des Drittanbieterkontos die Rolle programmgesteuert übernehmen, um Protokolldateien aus dem Bucket lesen zu können. Weitere Informationen finden Sie unter Übernehmen einer Rolle.

Übernehmen einer Rolle

Sie müssen für jede Rolle, die Sie in jedem Konto erstellen, einen eigenen IAM Benutzer festlegen. Anschließend müssen Sie sicherstellen, dass jeder IAM Benutzer über die entsprechenden Berechtigungen verfügt.

IAMBenutzer und Rollen

Nachdem Sie die erforderlichen Rollen und Richtlinien erstellt haben, müssen Sie für jedes Konto, mit dem Sie Dateien teilen möchten, einen IAM Benutzer festlegen. Jeder IAM Benutzer übernimmt programmgesteuert die entsprechende Rolle für den Zugriff auf die Protokolldateien. Wenn ein Benutzer eine Rolle übernimmt, gibt AWS temporäre Sicherheitsanmeldeinformationen an diesen Benutzer. Sie können dann Anfragen zum Auflisten, Abrufen, Kopieren oder Löschen von Protokolldateien stellen, abhängig von den Berechtigungen, die durch die der Rolle zugeordnete Zugriffsrichtlinie gewährt wurden.

Weitere Informationen zum Arbeiten mit IAM Identitäten finden Sie unter IAMIdentitäten (Benutzer, Benutzergruppen und Rollen).

Der Hauptunterschied besteht in der Zugriffsrichtlinie, die Sie für jede IAM Rolle in jedem Szenario erstellen.

Erstellen von Berechtigungsrichtlinien für IAM-Benutzer

Um die von einer Rolle zugelassenen Aktionen ausführen zu können, muss der IAM Benutzer über die Berechtigung zum Aufrufen von verfügen AWS STS AssumeRoleAPI. Sie müssen die Richtlinie für die einzelnen Benutzer bearbeiten, um ihnen die entsprechenden Berechtigungen zu gewähren. Dazu legen Sie in der Richtlinie, die Sie dem IAM Benutzer zuordnen, ein Resource-Element fest. Das folgende Beispiel zeigt eine Richtlinie für einen IAM Benutzer in einem anderen Konto, die es diesem Benutzer ermöglicht, eine Rolle anzunehmen, die zuvor von Konto A Test erstellt wurde.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::account-A-id:role/Test" } ] }
So bearbeiten Sie eine vom Kunden verwaltete Richtlinie (Konsole)
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Richtlinien.

  3. Wählen Sie in der Richtlinienliste den Namen der zu bearbeitenden Richtlinie. Sie können über das Suchfeld die Liste der Gruppen filtern.

  4. Wählen Sie die Registerkarte Berechtigungen und anschließend Richtlinie bearbeiten aus.

  5. Führen Sie eine der folgenden Aktionen aus:

    • Wählen Sie die Option Visual, um Ihre Richtlinie zu ändern, ohne die JSON Syntax zu verstehen. Sie können Änderungen am Service, an Aktionen, Ressourcen oder optionalen Bedingungen für jeden Berechtigungsblock in Ihrer Richtlinie vornehmen. Sie können auch eine Richtlinie importieren, um unten in der Richtlinie zusätzliche Berechtigungen hinzuzufügen. Wenn Sie alle gewünschten Änderungen vorgenommen haben, wählen Sie Weiter aus, um fortzufahren.

    • Wählen Sie die JSONOption, um Ihre Richtlinie zu ändern, indem Sie Text in das JSON Textfeld eingeben oder einfügen. Sie können auch eine Richtlinie importieren, um unten in der Richtlinie zusätzliche Berechtigungen hinzuzufügen. Beheben Sie alle Sicherheitswarnungen, Fehler oder allgemeinen Warnungen, die während der Richtlinien-Validierung erzeugt wurden, und wählen Sie dann Weiter.

      Anmerkung

      Sie können jederzeit zwischen den Optionen Visual und JSONEditor wechseln. Wenn Sie jedoch Änderungen vornehmen oder im visuellen Editor auf Weiter klicken, IAM könnte es sein, dass Ihre Richtlinie neu strukturiert wird, um sie für den visuellen Editor zu optimieren. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Umstrukturierung von Richtlinien.

  6. Überprüfen Sie auf der Seite Überprüfen und Speichern den Bereich In dieser Richtlinie definierte Berechtigungen und wählen Sie dann Änderungen speichern aus, um Ihre Arbeit zu speichern.

  7. Wenn die verwaltete Richtlinie bereits das Maximum von fünf Versionen aufweist, wird ein Dialogfeld angezeigt, wenn Sie Save changes (Änderungen speichern) auswählen. Damit Ihre neue Version gespeichert wird, wird die älteste Version der Richtlinie, die nicht die Standardversion ist, entfernt und durch diese neue Version ersetzt. Optional können Sie die neue Version als Standardversion der Richtlinie einrichten.

    Wählen Sie Änderungen speichern aus, um Ihre neue Richtlinienversion zu speichern.

Anrufen AssumeRole

Ein Benutzer kann eine Rolle übernehmen, indem er eine Anwendung erstellt, die die aufruft AWS STS AssumeRoleAPIund den Namen der Rollensitzung, die Amazon-Ressourcennummer (ARN) der zu übernehmenden Rolle und eine optionale externe ID weitergibt. Der Rollensitzungsname wird vom Konto definiert, das die zu übernehmende Rolle erstellt hat. Die externe ID, falls vorhanden, wird vom Drittanbieter-Konto definiert und an das besitzende Konto weitergegeben, damit sie bei der Rollenerstellung berücksichtigt wird. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter So verwenden Sie eine externe ID, wenn Sie Dritten Zugriff auf Ihre AWS Ressourcen gewähren. Sie können die ARN von Konto A abrufen, indem Sie die IAM Konsole öffnen.

Um den ARN Wert in Konto A mit der IAM Konsole zu ermitteln
  1. Wählen Sie Rollen.

  2. Wählen Sie die Rolle aus, die Sie überprüfen möchten.

  3. Suchen Sie ARN im Abschnitt Zusammenfassung nach der Rolle.

Das AssumeRole API gibt temporäre Anmeldeinformationen zurück, die für den Zugriff auf Ressourcen im eigenen Konto verwendet werden können. In diesem Beispiel sind die Ressourcen, auf die Sie zugreifen möchten, der Amazon-S3-Bucket und die in diesem Bucket enthaltenen Protokolldateien. Die temporären Anmeldeinformationen verfügen über die von Ihnen in der vordefinierten Rollen-Zugriffsrichtlinie festgelegten Berechtigungen.

Das folgende Python-Beispiel (unter Verwendung von AWS SDK for Python (Boto)) zeigt, wie AssumeRole aufgerufen und wie die zurückgegebenen temporären Sicherheitsanmeldeinformationen verwendet werden können, um alle durch Konto A gesteuerten Amazon-S3-Buckets aufzulisten.

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

Beenden Sie die gemeinsame Nutzung von CloudTrail Protokolldateien zwischen Konten AWS

Um die gemeinsame Nutzung von Protokolldateien für andere Benutzer zu beenden AWS-Konto, löschen Sie die Rolle, die Sie für dieses Konto erstellt haben. Weitere Informationen zum Löschen von Rollen finden Sie unter Löschen von Rollen oder Instance-Profilen.