Contrôler l'accès aux ressources Amazon Kinesis Data Streams à l'aide de 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ôler l'accès aux ressources Amazon Kinesis Data Streams à l'aide de 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 de AWS 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

IAMGrâce à Kinesis Data Streams, vous pouvez contrôler si les utilisateurs de votre organisation peuvent effectuer une tâche à l'aide d'actions Kinesis Data API Streams spécifiques et s'ils peuvent utiliser des ressources spécifiques. AWS

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

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

Pour plus d'informations sur Amazon DynamoDB IAM et sur Amazon DynamoDB, consultez la section IAM Utiliser pour contrôler l'accès aux ressources Amazon DynamoDB dans le manuel du développeur Amazon DynamoDB.

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

Syntaxe d’une politique

Une IAM politique est un JSON document composé 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. Par défaut, IAM les utilisateurs ne sont pas autorisés à utiliser les ressources et les API actions. Toutes les demandes sont donc refusées. Une autorisation explicite remplace l’autorisation par défaut. Un refus explicite remplace toute autorisation.

  • Action : L'action est l'APIaction spécifique pour laquelle vous accordez ou refusez l'autorisation.

  • Resource : la ressource affectée par l’action. Pour spécifier une ressource dans l'instruction, 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 IAM politiques, vous souhaiterez peut-être utiliser le générateur de IAM politiques et le simulateur IAM de politiques.

Actions pour Kinesis Data Streams

Dans une déclaration IAM de politique, vous pouvez spécifier n'importe quelle API action à partir de n'importe quel service compatibleIAM. Pour Kinesis Data Streams, utilisez le préfixe suivant avec le nom de API l'action :. 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 API Streams, consultez le API Amazon Kinesis Reference.

Amazon Resource Names (ARNs) pour Kinesis Data Streams

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

Utilisez le format de ARN ressource 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 flux ARN 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, IAM utilisateur ou IAM rôle. Les politiques basées sur les ressources sont des documents de JSON stratégie 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 StreamsAPI, SDK ou.

Notez que le partage de l'accès aux consommateurs enregistrés, tel que Enhanced Fan Out, nécessite une politique à la fois concernant le flux de données ARN et le consommateurARN.

Activer l'accès entre comptes

Pour permettre un accès entre comptes, vous pouvez spécifier un compte entier ou des entités IAM dans un autre compte en tant que mandataire dans une stratégie basée sur les ressources. L’ajout d’un principal entre comptes à 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 de politiques basées sur les ressources pour l'accès entre comptes, voir Accès aux ressources entre comptes 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'Actionélément d'une JSON politique décrit les actions que vous pouvez utiliser pour autoriser ou refuser l'accès dans une politique. Les actions de stratégie portent généralement le même nom que l' AWS APIopération 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 le flux ARN pour l'accès au flux de données et le consommateur ARN pour l'accès client 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"}

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

  • IAMRôle — {"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 par programmation

En dehors de AWS Management Console, Kinesis Data Streams en propose APIS trois pour gérer votre politique 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 AWS ressources associées (par exemple, AWS Key Management Service KMS clés)

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

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

  • IDsLes 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 KMS clé AWS gérée et que vous souhaitez partager l'accès via une politique de ressources, vous devez passer à l'utilisation de la 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 compteCMK, en utilisant KMS les fonctionnalités de partage entre comptes. Assurez-vous de modifier également les IAM politiques relatives au partage des entités principales. Pour plus d'informations, voir Autoriser les utilisateurs d'autres comptes à utiliser une KMS clé.

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.