Steuern des Zugriffs auf Amazon Kinesis Data Streams Streams-Ressourcen 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 Amazon Kinesis Data Streams Streams-Ressourcen mithilfe von IAM

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

  • Erstellen Sie Benutzer und Gruppen unter Ihrem AWS Konto

  • 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

Durch die Verwendung IAM mit Kinesis Data Streams können Sie steuern, ob Benutzer in Ihrer Organisation eine Aufgabe mithilfe bestimmter Kinesis Data Streams API Streams-Aktionen ausführen können und ob sie bestimmte 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. DynamoDB 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 zu KCLfinden Sie unter Entwickeln Sie KCL 1.x-Verbraucher.

Weitere Informationen zu IAM finden Sie unter:

Weitere Informationen zu IAM Amazon DynamoDB finden Sie unter Using IAM to Control Access to Amazon DynamoDB Resources im Amazon DynamoDB DynamoDB-Entwicklerhandbuch.

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 aus einer oder mehreren Aussagen besteht. 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. Standardmäßig sind IAM Benutzer nicht berechtigt, Ressourcen und API Aktionen zu verwenden, sodass alle Anfragen abgelehnt werden. Dieser Standardwert kann durch eine explizite Zugriffserlaubnis überschrieben werden. Eine explizite Zugriffsverweigerung überschreibt jedwede Zugriffserlaubnis.

  • Aktion: Die Aktion ist die spezifische API Aktion, für die Sie die Erlaubnis erteilen oder verweigern.

  • Resource: Die von einer Aktion betroffene Ressource. Um eine Ressource in der Anweisung anzugeben, müssen Sie ihren Amazon-Ressourcennamen (ARN) verwenden.

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

Wenn Sie IAM Richtlinien erstellen und verwalten, möchten Sie möglicherweise den IAMPolicy Generator und den IAMPolicy Simulator verwenden.

Aktionen für Kinesis Data Streams

In einer IAM Richtlinienerklärung können Sie jede API Aktion von jedem Dienst angeben, der dies unterstütztIAM. Verwenden Sie für Kinesis Data Streams das folgende Präfix mit dem 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 Streams-Aktionen finden Sie in der Amazon Kinesis Kinesis-Referenz API.

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

Jede IAM Richtlinienerklärung gilt für die Ressourcen, die Sie mithilfe ihrer ARNs angeben.

Verwenden Sie das folgende ARN Ressourcenformat für Kinesis-Datenstreams:

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/*" ] } ] }

Teilen Sie Ihren Datenstream mit einem anderen Konto

Anmerkung

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

Fügen Sie Ihrem Datenstream eine ressourcenbasierte Richtlinie hinzu, um einem anderen Konto, IAM Benutzer oder einer anderen Rolle Zugriff zu gewähren. IAM Ressourcenbasierte Richtlinien sind JSON Richtliniendokumente, die Sie an eine Ressource wie einen Datenstrom anhängen. 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 Kinesis Data Streams Streams-Konsole konfigurieren, API oderSDK.

Beachten Sie, dass für die gemeinsame Nutzung des Zugriffs mit registrierten Verbrauchern wie Enhanced Fan Out eine Richtlinie sowohl für den Datenstream ARN als auch für den Verbraucher ARN erforderlich ist.

Aktivieren Sie den kontoübergreifenden Zugriff

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 kontenübergreifenden Zugriff finden Sie unter Kontoübergreifender Ressourcenzugriff in. IAM

Datenstream-Administratoren können mithilfe von AWS Identity and Access Management Richtlinien angeben, wer auf was Zugriff hat. Das bedeutet, welcher Prinzipal kann Aktionen für welche Ressourcen und unter welchen Bedingungen ausführen. Das Action Element 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 Datenstream und den Consumer ARN für den registrierten Consumer-Zugriff 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"}

  • IAMBenutzer — {"AWS": "arn:aws:iam::123456789012:user/user-name"}

  • IAMRolle — {"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.

Verwalten Sie die Richtlinie für Ihren Datenstrom programmatisch

Abgesehen von bietet Kinesis Data Streams drei Optionen APIS für die 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. Rollen) IAM

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

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

  • Verbund-Prinzipale werden nicht unterstützt.

  • Canonical−Benutzer werden nicht unterstützt. IDs

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

Teilen Sie den Zugriff 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 ist serverseitige Verschlüsselung für Kinesis Data Streams?. Darüber hinaus müssen Sie den für die gemeinsame Nutzung verantwortlichen Entitäten den Zugriff auf Ihre Daten gewähren und dabei Funktionen CMK zur KMS kontenübergreifenden Nutzung nutzen. Stellen Sie sicher, dass Sie die Änderungen auch in den IAM Richtlinien für die gemeinsam genutzten Haupteinheiten vornehmen. Weitere Informationen finden Sie unter Benutzern mit anderen Konten die Verwendung eines KMS Schlüssels gestatten.

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 Teilen Sie den Zugriff mit kontoübergreifenden Funktionen AWS Lambda.