Steuern des Zugriffs auf Ressourcen von Amazon Kinesis Data Streams mithilfe von IAM - Amazon-Kinesis-Data-Streams

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.

Steuern des Zugriffs auf Ressourcen von Amazon Kinesis Data Streams mithilfe von IAM

AWS Identity and Access Management (IAM) ermöglicht Ihnen Folgendes:

  • Erstellen Sie Benutzer und Gruppen unter Ihrem Konto AWS

  • Weisen Sie jedem Benutzer unter Ihrem AWS Konto eindeutige Sicherheitsanmeldedaten zu

  • Kontrollieren Sie die Berechtigungen der einzelnen Benutzer zur Ausführung von Aufgaben mithilfe von AWS Ressourcen

  • Erlauben Sie den Benutzern eines anderen AWS Kontos, Ihre AWS Ressourcen gemeinsam zu nutzen

  • Erstellen Sie Rollen für Ihr AWS Konto und definieren Sie die Benutzer oder Dienste, die diese Rollen übernehmen können

  • Verwenden Sie bestehende Identitäten für Ihr Unternehmen, um Berechtigungen zur Ausführung von Aufgaben unter Verwendung von AWS Ressourcen zu erteilen

Wenn Sie IAM zusammen mit Kinesis Data Streams verwenden, können Sie steuern, ob Benutzer im Unternehmen Aufgaben mit bestimmten API-Aktionen von Kinesis Data Streams ausführen und spezifische AWS -Ressourcen verwenden können.

Wenn Sie eine Anwendung mithilfe der Kinesis Client Library (KCL) entwickeln, muss Ihre Richtlinie Berechtigungen für Amazon DynamoDB und Amazon beinhalten. Die KCL verwendet DynamoDB CloudWatch, um Statusinformationen für die Anwendung zu verfolgen und in Ihrem Namen KCL-Metriken an CloudWatch diese zu senden. CloudWatch Weitere Informationen zur KCL finden Sie unter Entwicklung von KCL 1.x-Verbrauchern.

Weitere Informationen zu IAM finden Sie unter:

Weitere Informationen zu IAM und Amazon DynamoDB finden Sie unter Verwendung von IAM zur Steuerung des Zugriffs auf Amazon-DynamoDB-Ressourcen im Amazon DynamoDB-Entwickerhandbuch.

Weitere Informationen zu IAM und Amazon CloudWatch finden Sie unter Steuern des Benutzerzugriffs auf Ihr AWS Konto im CloudWatch Amazon-Benutzerhandbuch.

Richtliniensyntax

Eine IAM-Richtlinie ist ein JSON-Dokument, das eine oder mehrere Anweisungen enthält. Jede Anweisung ist folgendermaßen strukturiert:

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

Eine Anweisung kann aus verschiedenen Elementen bestehen:

  • Effect: Der effect-Wert kann Allow oder Deny lauten. IAM-Benutzer verfügen standardmäßig nicht über die Berechtigung zur Verwendung von Ressourcen und API-Aktionen. Daher werden alle Anfragen abgelehnt. Dieser Standardwert kann durch eine explizite Zugriffserlaubnis überschrieben werden. Eine explizite Zugriffsverweigerung überschreibt jedwede Zugriffserlaubnis.

  • Action: Mit action wird die API-Aktion spezifiziert, für die Sie Berechtigungen erteilen oder verweigern.

  • Resource: Die von einer Aktion betroffene Ressource. Um eine Ressource in der Anweisung anzugeben, benötigen Sie deren Amazon-Ressourcennamen (ARN).

  • Condition: Bedingungen sind optional. Mit ihrer Hilfe können Sie bestimmen, wann Ihre Richtlinie wirksam wird.

Beim Erstellen und Verwalten von IAM-Richtlinien sollten Sie den IAM-Richtliniengenerator und den IAM-Richtliniensimulator verwenden.

Aktionen für Kinesis Data Streams

In einer IAM-Richtlinienanweisung können Sie jede API-Aktion von jedem Service, der IAM unterstützt, angeben. Bei Kinesis Data Streams setzen Sie folgendes Präfix vor den Namen der API-Aktion: kinesis:. Beispiel: kinesis:CreateStream, kinesis:ListStreams und kinesis:DescribeStreamSummary.

Um mehrere Aktionen in einer einzigen Anweisung anzugeben, trennen Sie sie wie folgt durch Kommata:

"Action": ["kinesis:action1", "kinesis:action2"]

Sie können auch mehrere Aktionen mittels Platzhaltern angeben. Beispielsweise können Sie alle Aktionen festlegen, deren Name mit dem Wort "Get" beginnt:

"Action": "kinesis:Get*"

Um alle Operationen von Kinesis Data Streams anzugeben, verwenden Sie den Platzhalter * folgendermaßen:

"Action": "kinesis:*"

Die vollständige Liste der Kinesis-Data-Streams-API-Aktionen finden Sie unter Amazon-Kinesis-API-Referenz.

Amazon-Ressourcennamen (ARNs) für Kinesis Data Streams

Jede IAM-Richtlinienanweisung gilt für die Ressourcen, die Sie mithilfe ihrer ARNs angegeben haben.

Verwenden Sie das folgende ARN-Ressourcenformat für Kinesis-Datenströme:

arn:aws:kinesis:region:account-id:stream/stream-name

Beispielsweise:

"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream

Beispielrichtlinien für Kinesis Data Streams

Die folgenden Beispielrichtlinien zeigen, wie Sie den Benutzerzugriff auf Kinesis-Datenströme steuern könnten.

Example 1: Allow users to get data from a stream

Diese Richtlinie erlaubt einem Benutzer oder einer Gruppe, die Operationen DescribeStreamSummary, GetShardIterator und GetRecords auf dem angegebenen Stream und ListStreams auf einem beliebigen Stream auszuführen. Diese Richtlinie könnte auf Benutzer angewendet werden, die Daten aus einem spezifischen Stream abrufen können sollten.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:Get*", "kinesis:DescribeStreamSummary" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] }, { "Effect": "Allow", "Action": [ "kinesis:ListStreams" ], "Resource": [ "*" ] } ] }
Example 2: Allow users to add data to any stream in the account

Diese Richtlinie erlaubt einem Benutzer oder einer Gruppe, die Operation PutRecord mit einem beliebigen Stream des Kontos zu verwenden. Diese Richtlinie könnte auf Benutzer angewendet werden, die Daten zu allen Streams in einem Konto hinzufügen können sollten.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/*" ] } ] }
Example 3: Allow any Kinesis Data Streams action on a specific stream

Diese Richtlinie erlaubt einem Benutzer oder einer Gruppe, eine beliebige Operation von Kinesis Data Streams auf dem angegebenen Stream zu verwenden. Diese Richtlinie könnte auf Benutzer angewendet werden, die administrative Kontrolle über einen bestimmten Stream haben sollten.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }
Example 4: Allow any Kinesis Data Streams action on any stream

Diese Richtlinie erlaubt einem Benutzer oder einer Gruppe, eine beliebige Operation von Kinesis Data Streams auf einem beliebigen Stream in einem Konto zu verwenden. Da diese Richtlinie vollen Zugriff auf alle Ihre Streams gewährt, sollten Sie sie auf Administratoren beschränken.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:*:111122223333:stream/*" ] } ] }

Freigabe Ihres Datenstroms für ein anderes Konto

Anmerkung

Die Kinesis Producer Library unterstützt derzeit nicht die Angabe eines Stream-ARN beim Schreiben in einen Datenstream. Verwenden Sie das AWS SDK, wenn Sie in einen kontoübergreifenden Datenstream schreiben möchten.

Fügen Sie eine ressourcenbasierte Richtlinie an Ihren Datenstrom an, um einem anderen Konto, einem IAM-Benutzer oder einer IAM-Rolle Zugriff zu gewähren. Ressourcenbasierte Richtlinien sind JSON-Richtliniendokumente, die Sie an eine Ressource, beispielsweise einen Datenstrom, anfügen. Diese Richtlinien erteilen dem angegebenen Prinzipal die Berechtigung zum Ausführen bestimmter Aktionen für diese Ressource und definieren, unter welchen Bedingungen diese gilt. Eine Richtlinie kann mehrere Anweisungen enthalten. Sie müssen in einer ressourcenbasierten Richtlinie einen Prinzipal angeben. Zu den Prinzipalen können Konten, Benutzer, Rollen, Verbundbenutzer oder Dienste gehören. AWS Sie können Richtlinien in der Konsole von Kinesis Data Streams, API oder SDK konfigurieren.

Beachten Sie, dass die Freigabe des Zugriffs für registrierte Verbraucher, wie beispielsweise Enhanced Fan-Out, eine Richtlinie sowohl für den Datenstrom-ARN als auch für den Verbraucher-ARN erfordert.

Aktivierung des kontoübergreifenden Zugriffs

Um kontoübergreifenden Zugriff zu ermöglichen, können Sie ein gesamtes Konto oder IAM-Entitäten in einem anderen Konto als Prinzipal in einer ressourcenbasierten Richtlinie angeben. Durch das Hinzufügen eines kontoübergreifenden Auftraggebers zu einer ressourcenbasierten Richtlinie ist nur die halbe Vertrauensbeziehung eingerichtet. Wenn sich der Prinzipal und die Ressource in getrennten AWS Konten befinden, müssen Sie außerdem eine identitätsbasierte Richtlinie verwenden, um dem Prinzipal Zugriff auf die Ressource zu gewähren. Wenn jedoch eine ressourcenbasierte Richtlinie Zugriff auf einen Prinzipal in demselben Konto gewährt, ist keine zusätzliche identitätsbasierte Richtlinie erforderlich.

Weitere Informationen zur Verwendung ressourcenbasierter Richtlinien für den kontoübergreifenden Zugriff finden Sie unter Kontoübergreifender Ressourcenzugriff in IAM.

Datenstream-Administratoren können mithilfe von AWS Identity and Access Management Richtlinien festlegen, wer Zugriff auf was hat. Das heißt, welcher Prinzipal kann Aktionen für welche Ressourcen und unter welchen Bedingungen ausführen. Das Element Action einer JSON-Richtlinie beschreibt die Aktionen, mit denen Sie den Zugriff in einer Richtlinie zulassen oder verweigern können. Richtlinienaktionen haben normalerweise denselben Namen wie der zugehörige AWS API-Vorgang.

Aktionen von Kinesis Data Streams, die freigegeben werden können:

Aktion Zugriffsebene
DescribeStreamConsumer Konsument
DescribeStreamSummary Datenstrom
GetRecords Datenstrom
GetShardIterator Datenstrom
ListShards Datenstrom
PutRecord Datenstrom
PutRecords Datenstrom
SubscribeToShard Konsument

Im Folgenden finden Sie Beispiele für die Verwendung einer ressourcenbasierten Richtlinie, um kontoübergreifenden Zugriff auf Ihren Datenstrom oder registrierten Verbraucher zu gewähren.

Um eine kontoübergreifende Aktion durchzuführen, müssen Sie den Stream-ARN für den Zugriff auf den Datenstrom und den Verbraucher-ARN für den Zugriff registrierter Verbraucher angeben.

Beispiel für ressourcenbasierte Richtlinien für Kinesis-Datenstreams

Die Freigabe eines registrierten Verbrauchers erfordert aufgrund der erforderlichen Maßnahmen sowohl eine Datenstromrichtlinie als auch eine Verbraucherrichtlinie.

Anmerkung

Nachfolgend finden Sie Beispiele für gültige Werte für Principal:

  • {"AWS": "123456789012"}

  • IAM-Benutzer – {"AWS": "arn:aws:iam::123456789012:user/user-name"}

  • IAM-Rolle – {"AWS":["arn:aws:iam::123456789012:role/role-name"]}

  • Mehrere Prinzipale (kann eine Kombination aus Konto, Benutzer, Rolle sein) – {"AWS":["123456789012", "123456789013", "arn:aws:iam::123456789012:user/user-name"]}

Example 1: Write access to the data stream
{ "Version": "2012-10-17", "Id": "__default_write_policy_ID", "Statement": [ { "Sid": "writestatement", "Effect": "Allow", "Principal": { "AWS": "Account12345" }, "Action": [ "kinesis:DescribeStreamSummary", "kinesis:ListShards", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC" } ] }
Example 2: Read access to the data stream
{ "Version": "2012-10-17", "Id": "__default_sharedthroughput_read_policy_ID", "Statement": [ { "Sid": "sharedthroughputreadstatement", "Effect": "Allow", "Principal": { "AWS": "Account12345" }, "Action": [ "kinesis:DescribeStreamSummary", "kinesis:ListShards", "kinesis:GetRecords", "kinesis:GetShardIterator" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC" } ] }
Example 3: Share enhanced fan-out read access to a registered consumer

Erklärung zur Datenstromrichtlinie:

{ "Version": "2012-10-17", "Id": "__default_sharedthroughput_read_policy_ID", "Statement": [ { "Sid": "consumerreadstatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account12345:role/role-name" }, "Action": [ "kinesis:DescribeStreamSummary", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC" } ] }

Erklärung zur Verbraucherrichtlinie:

{ "Version": "2012-10-17", "Id": "__default_efo_read_policy_ID", "Statement": [ { "Sid": "eforeadstatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account12345:role/role-name" }, "Action": [ "kinesis:DescribeStreamConsumer", "kinesis:SubscribeToShard" ], "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC/consumer/consumerDEF:1674696300" } ] }

Platzhalter (*) werden für Aktionen oder Prinzipal-Felder nicht unterstützt, um das Prinzip der geringsten Berechtigung aufrecht zu erhalten.

Programmgesteuertes Verwalten der Richtlinie für Ihren Datenstrom

Darüber hinaus verfügt Kinesis Data Streams über drei APIS zur Verwaltung Ihrer Datenstream-Richtlinie: AWS Management Console

Verwenden Sie PutResourePolicy, um eine Richtlinie für einen Datenstrom oder Verbraucher anzufügen oder zu überschreiben. Verwenden Sie GetResourcePolicy, um eine Richtlinie für den angegebenen Datenstrom oder Verbraucher zu überprüfen und anzuzeigen. Verwenden Sie DeleteResourcePolicy, um eine Richtlinie für den angegebenen Datenstrom oder Verbraucher zu löschen.

Richtlinienbeschränkungen

Für die Ressourcenrichtlinien von Kinesis Data Streams gelten folgende Einschränkungen:

  • Platzhalter (*) werden nicht unterstützt, um zu verhindern, dass umfassender Zugriff über die Ressourcenrichtlinien gewährt wird, die direkt mit einem Datenstrom oder einem registrierten Verbraucher verknüpft sind. Prüfen Sie außerdem sorgfältig die folgenden Richtlinien, um sicherzustellen, dass sie keinen breiten Zugriff gewähren:

    • Identitätsbasierte Richtlinien, die mit zugehörigen AWS Prinzipalen verknüpft sind (z. B. IAM-Rollen)

    • Ressourcenbasierte Richtlinien, die mit zugehörigen AWS Ressourcen verknüpft sind (z. B. KMS-Schlüssel) AWS Key Management Service

  • AWS Service Principals werden für Principals nicht unterstützt, um zu verhindern, dass Stellvertreter verwirrt werden.

  • Verbund-Prinzipale werden nicht unterstützt.

  • Kanonische Benutzer-IDs werden nicht unterstützt.

  • Die Größe der Richtlinie darf 20 KB nicht überschreiten.

Freigabe des Zugriffs auf verschlüsselte Daten

Wenn Sie die serverseitige Verschlüsselung für einen Datenstrom mit AWS verwaltetem KMS-Schlüssel aktiviert haben und den Zugriff über eine Ressourcenrichtlinie gemeinsam nutzen möchten, müssen Sie zur Verwendung des vom Kunden verwalteten Schlüssels (CMK) wechseln. Weitere Informationen finden Sie unter Was bedeutet eine serverseitige Verschlüsselung in Kinesis Data Streams?. Darüber hinaus müssen Sie Ihren freigebenden Prinzipal-Entitäten Zugriff auf Ihren CMK gewähren, indem Sie die kontoübergreifenden KMS-Freigabe-Funktionen nutzen. Stellen Sie sicher, dass Sie auch die IAM-Richtlinien für die freigebenden Prinzipal-Entitäten ändern. Weitere Informationen finden Sie unter Benutzern in anderen Konten die Verwendung eines KMS-Schlüssels erlauben.

Konfigurieren Sie eine AWS Lambda Funktion zum Lesen aus Kinesis Data Streams in einem anderen Konto

Ein Beispiel dafür, wie Sie eine Lambda-Funktion zum Lesen von Kinesis Data Streams in einem anderen Konto konfigurieren können, finden Sie unter Gemeinsamer Zugriff mit kontoübergreifenden Funktionen AWS Lambda.