Contrôle de l'accès aux ressources Amazon Kinesis Data Streams à l'aide d'IAM - Amazon Kinesis Data Streams

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.

Contrôle de l'accès aux ressources Amazon Kinesis Data Streams à l'aide d'IAM

AWS Identity and Access Management (IAM) vous permet d'effectuer les opérations suivantes :

  • Créez des utilisateurs et des groupes sous votre AWS compte

  • Attribuez des informations de sécurité uniques à chaque utilisateur de votre AWS compte

  • Contrôlez les autorisations de chaque utilisateur pour effectuer des tâches à l'aide AWS des ressources

  • Autoriser les utilisateurs d'un autre AWS compte à partager vos AWS ressources

  • Créez des rôles pour votre AWS compte et définissez les utilisateurs ou les services qui peuvent les assumer

  • Utilisez les identités existantes pour que votre entreprise accorde des autorisations pour effectuer des tâches à l'aide de AWS ressources

Grâce à l'utilisation d'IAM avec Kinesis Data Streams, vous pouvez contrôler si les utilisateurs de votre organisation peuvent exécuter une tâche à l'aide d'actions d'API Kinesis Data Streams particulières et s'ils peuvent utiliser les ressources AWS spécifiques.

Si vous développez une application à l'aide de la bibliothèque client Kinesis (KCL), votre politique doit inclure des autorisations pour Amazon DynamoDB et Amazon ; CloudWatch la KCL utilise DynamoDB pour suivre les informations d'état de l'application et pour envoyer des métriques KCL en votre nom. CloudWatch CloudWatch Pour plus d'informations sur la KCL, consultez Développez les consommateurs de KCL 1.x.

Pour plus d’informations sur IAM, consultez les ressources suivantes :

Pour plus d'informations sur IAM et Amazon DynamoDB, consultez Utiliser IAM pour contrôler l'accès aux ressources Amazon DynamoDB (français non garanti) dans le Guide du développeur Amazon DynamoDB (français non garanti).

Pour plus d'informations sur IAM et Amazon CloudWatch, consultez la section Contrôle de l'accès des utilisateurs à votre AWS compte dans le guide de l' CloudWatch utilisateur Amazon.

Syntaxe d’une politique

Une politique IAM est un document JSON qui se compose d’une ou de plusieurs déclarations. Chaque déclaration est structurée comme suit :

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

Une déclaration se compose de différents éléments :

  • Effect : effect peut avoir la valeur Allow ou Deny. Comme, par défaut, les utilisateurs IAM n'ont pas la permission d'utiliser les ressources et les actions d'API, toutes les demandes sont refusées. Une autorisation explicite remplace l'autorisation par défaut. Un refus explicite remplace toute autorisation.

  • Action : action désigne l’action d’API spécifique pour laquelle vous accordez ou refusez l’autorisation.

  • Resource : la ressource affectée par l’action. Pour spécifier une ressource dans la déclaration, vous devez utiliser son Amazon Resource Name (ARN).

  • Condition : les conditions sont facultatives. Elles permettent de contrôler à quel moment votre stratégie sera effective.

Lorsque vous créez et gérez des politiques IAM, vous pouvez utiliser le générateur de politiques IAM et le simulateur de politiques IAM.

Actions pour Kinesis Data Streams

Dans une déclaration de politique IAM, vous pouvez spécifier une action d’API à partir de n’importe quel service prenant en charge IAM. Pour Kinesis Data Streams, utilisez le préfixe suivant avec le nom de l'action d'API : kinesis:. Par exemple : kinesis:CreateStream, kinesis:ListStreams et kinesis:DescribeStreamSummary.

Pour spécifier plusieurs actions dans une seule déclaration, séparez-les par des virgules comme suit :

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

Vous pouvez aussi spécifier plusieurs actions à l’aide de caractères génériques. Par exemple, vous pouvez spécifier toutes les actions dont le nom commence par le mot « Get » comme suit :

"Action": "kinesis:Get*"

Pour spécifier toutes les opérations Kinesis Data Streams, utilisez le caractère générique * comme suit :

"Action": "kinesis:*"

Pour obtenir la liste complète des actions Kinesis Data Streams, veuillez consulter la Référence d'API Amazon Kinesis.

Amazon Resource Names (ARNs) pour Kinesis Data Streams

Chaque déclaration de politique IAM s'applique aux ressources que vous spécifiez à l'aide de leur. ARNs

Utilisez le format de ressource ARN suivant pour les flux de données Kinesis :

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

Par exemple :

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

Exemples de politiques pour Kinesis Data Streams

Les exemples de politiques suivants montrent comment vous pouvez contrôler l'accès utilisateur à vos flux de données Kinesis.

Example 1: Allow users to get data from a stream

Cette stratégie permet à un utilisateur ou un groupe d'effectuer les opérations DescribeStreamSummary, GetShardIterator et GetRecords sur le flux spécifié, et ListStreams sur n'importe quel flux. Cette stratégie peut être appliquée aux utilisateurs qui doivent pouvoir extraire des données d'un flux spécifique.

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

Cette stratégie permet à un utilisateur ou un groupe d'utiliser l'opération PutRecord avec tous les flux du compte. Cette stratégie peut être appliquée aux utilisateurs qui doivent pouvoir ajouter des enregistrements à tous les flux d'un compte.

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

Cette politique permet à un utilisateur ou un groupe d'utiliser une opération Kinesis Data Streams sur le flux spécifié. Cette stratégie peut être appliquée aux utilisateurs qui doivent disposer d'un contrôle administratif sur un flux spécifique.

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

Cette politique permet à un utilisateur ou un groupe d'utiliser une opération Kinesis Data Streams sur un flux d'un compte. Etant donné que cette stratégie accorde un accès complet à tous vos flux, vous devez la limiter aux administrateurs.

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

Partagez votre flux de données avec un autre compte

Note

La bibliothèque Kinesis Producer ne prend actuellement pas en charge la spécification d'un ARN de flux lors de l'écriture dans un flux de données. Utilisez le AWS SDK si vous souhaitez écrire dans un flux de données entre comptes.

Associez une politique basée sur les ressources à votre flux de données pour accorder l'accès à un autre compte, à un autre utilisateur IAM ou à un autre rôle IAM. Les politiques basées sur les ressources sont des documents de politique JSON que vous attachez à une ressource, telle qu'un flux de données. Ces politiques accordent au principal spécifié l'autorisation d'effectuer des actions spécifiques sur cette ressource et définissent sous quelles conditions cela s'applique. Une politique peut comporter plusieurs instructions. Vous devez spécifier un principal dans une politique basée sur les ressources. Les principaux peuvent inclure des comptes, des utilisateurs, des rôles, des utilisateurs fédérés ou AWS des services. Vous pouvez configurer des politiques dans la console Kinesis Data Streams, dabs l'API ou dans le SDK.

Notez que le partage de l'accès aux consommateurs enregistrés, tel que diffusion améliorée, nécessite une politique à la fois sur l'ARN du flux de données et sur l'ARN du consommateur.

Activer l'accès entre comptes

Pour permettre un accès intercompte, vous pouvez spécifier un compte entier ou des entités IAM dans un autre compte en tant que principal dans une politique basée sur les ressources. L’ajout d’un principal intercompte à une politique basée sur les ressources ne représente qu’une partie de l’instauration de la relation d’approbation. Lorsque le principal et la ressource se trouvent dans des AWS comptes distincts, vous devez également utiliser une politique basée sur l'identité pour accorder au principal l'accès à la ressource. Toutefois, si une politique basée sur des ressources accorde l’accès à un principal dans le même compte, aucune autre politique basée sur l’identité n’est requise.

Pour plus d'informations sur l'utilisation des politiques basées sur une ressource pour l'accès inter-compte, consultez Accès intercompte aux ressources dans IAM.

Les administrateurs de flux de données peuvent utiliser des AWS Identity and Access Management politiques pour spécifier qui a accès à quoi. C’est-à-dire, quel principal peut effectuer des actions sur quelles ressources et dans quelles conditions. L’élément Action d’une politique JSON décrit les actions que vous pouvez utiliser pour autoriser ou refuser l’accès à une politique. Les actions de stratégie portent généralement le même nom que l'opération AWS d'API associée.

Actions Kinesis Data Streams pouvant être partagées :

Action Niveau d'accès
DescribeStreamConsumer Consommateur
DescribeStreamSummary Flux de données
GetRecords Flux de données
GetShardIterator Flux de données
ListShards Flux de données
PutRecord Flux de données
PutRecords Flux de données
SubscribeToShard Consommateur

Vous trouverez ci-dessous des exemples d'utilisation d'une politique basée sur les ressources pour accorder l'accès intercompte à votre flux de données ou à votre consommateur enregistré.

Pour effectuer une action entre comptes, vous devez spécifier l'ARN du flux pour l'accès au flux de données et l'ARN du consommateur pour l'accès du consommateur enregistré.

Exemples de politiques basées sur les ressources pour les flux de données Kinesis

Le partage d'un consommateur enregistré implique à la fois une politique de flux de données et une politique des consommateurs en raison des actions nécessaires.

Note

Vous trouverez ci-dessous des exemples de valeurs valides pour le Principal:

  • {"AWS": "123456789012"}

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

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

  • Principaux multiples (peut être une combinaison de compte, d'utilisateur, de rôle) – {"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

Déclaration de politique de flux de données :

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

Déclaration de politique des consommateurs :

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

Le caractère générique (*) n'est pas pris en charge pour les actions ou le champ principal afin de maintenir le principe du moindre privilège.

Gérez la politique de votre flux de données de manière programmatique

En outre AWS Management Console, Kinesis Data Streams dispose de trois API pour gérer votre politique en matière de flux de données :

Utilisez PutResourePolicy pour attacher ou remplacer une politique pour un flux de données ou un consommateur. Utilisez GetResourcePolicy pour vérifier et afficher une politique pour le flux de données ou le consommateur spécifié. Utilisez DeleteResourcePolicy pour supprimer une politique pour le flux de données ou le consommateur spécifié.

Limites de la politique

Les politiques relatives aux ressources de Kinesis Data Streams comportent les restrictions suivantes :

  • Les caractères génériques (*) ne sont pas pris en charge pour empêcher l'octroi d'un accès étendu par le biais des politiques de ressources directement associées à un flux de données ou à un consommateur enregistré. En outre, examinez attentivement les politiques suivantes pour vous assurer qu'elles n'accordent pas un accès étendu :

    • Politiques basées sur l'identité associées aux AWS principaux associés (par exemple, les rôles IAM)

    • Politiques basées sur les ressources associées aux AWS ressources associées (par exemple, clés AWS Key Management Service KMS)

  • AWS Les directeurs de service ne sont pas pris en charge pour les directeurs d'école afin d'éviter toute confusion potentielle entre les adjoints.

  • Les principaux fédérés ne sont pas pris en charge.

  • IDs Les utilisateurs canoniques ne sont pas pris en charge.

  • La taille de la politique ne peut pas dépasser 20 Ko.

Partage de l'accès aux données chiffrées

Si vous avez activé le chiffrement côté serveur pour un flux de données avec une clé KMS AWS gérée et que vous souhaitez partager l'accès via une politique de ressources, vous devez passer à l'utilisation d'une clé gérée par le client (CMK). Pour de plus amples informations, veuillez consulter Qu'est-ce que le chiffrement côté serveur pour Kinesis Data Streams ?. En outre, vous devez autoriser vos entités principales de partage à accéder à votre clé CMK, en utilisant les fonctionnalités de partage entre comptes KMS. Assurez-vous de modifier également les politiques IAM pour les entités principales de partage. Pour plus d'informations, consultez la section Autorisation des utilisateurs d'autres comptes à utiliser une clé KMS.

Configurer une AWS Lambda fonction pour lire depuis Kinesis Data Streams dans un autre compte

Pour un exemple de configuration d'une fonction Lambda pour qu'elle puisse lire à partir de Kinesis Data Streams dans un autre compte, consultez Partage de l'accès grâce à des fonctions multi-comptes AWS Lambda.