Configuration des autorisations de rôle d’exécution Lambda
Pour accéder au cluster Amazon MSK, votre fonction et votre mappage des sources d’événements ont besoin d’autorisations pour effectuer diverses actions de l’API Amazon MSK. Ajoutez ces autorisations au rôle d’exécution de votre fonction. Si vos utilisateurs ont besoin de l’accès, ajoutez les autorisations requises à la stratégie d’identité de l’utilisateur ou du rôle correspondant.
Pour couvrir toutes les autorisations requises, vous pouvez associer la politique gérée AWSLambdaMSKExecutionRole à votre rôle d’exécution. Vous pouvez également ajouter chaque autorisation manuellement.
Rubriques
Autorisations de base
Votre rôle d’exécution de la fonction Lambda doit disposer des autorisations requises suivantes pour créer et stocker des journaux dans CloudWatch Logs.
Autorisations d’accès au cluster
Pour que Lambda puisse accéder à votre cluster Amazon MSK en votre nom, votre fonction Lambda doit disposer des autorisations suivantes dans son rôle d’exécution :
-
kafka:DescribeVpcConnection : obligatoire uniquement pour les mappages de sources d’événements entre comptes.
-
kafka:ListVpcConnections : non requis dans le rôle d’exécution, mais obligatoire pour un principal IAM qui crée un mappage des sources d’événements entre comptes.
Vous n’avez besoin d’ajouter que kafka:DescribeCluster ou kafka:DescribeClusterV2, au choix. Pour les clusters Amazon MSK alloués, l’une ou l’autre des autorisations fonctionne. Pour les clusters Amazon MSK sans serveur, vous devez utiliser kafka:DescribeClusterV2.
Note
Lambda prévoit à terme de supprimer l’autorisation kafka:DescribeCluster de la politique gérée AWSLambdaMSKExecutionRole. Si vous utilisez cette politique, migrez toutes les applications utilisant kafka:DescribeCluster pour utiliser kafka:DescribeClusterV2 à la place.
Autorisations VPC
Si votre cluster Amazon MSK se trouve dans un sous-réseau privé de votre VPC, votre fonction Lambda doit disposer d’autorisations supplémentaires pour accéder à vos ressources Amazon VPC. Ces ressources incluent les sous-réseaux, groupes de sécurité et interfaces réseau de votre VPC. Le rôle d’exécution de votre fonction doit avoir les autorisations suivantes :
Autorisations facultatives
Votre fonction Lambda peut également nécessiter ces autorisations pour :
-
Accédez à votre secret SCRAM si vous utilisez l’authentification SASL/SCRAM. Cela permet à votre fonction d’utiliser un nom d’utilisateur et un mot de passe pour se connecter à Kafka.
-
Décrivez votre secret Secrets Manager, si vous utilisez l’authentification mTLS ou SASL/SCRAM. Cela permet à votre fonction de récupérer les informations d’identification ou les certificats nécessaires pour des connexions sécurisées.
-
Accédez à votre clé gérée par le client AWS KMS si vous souhaitez chiffrer vos critères de filtrage. Cela permet à vos règles de filtrage des messages de rester secrètes.
-
Accédez aux secrets de votre registre de schémas, si vous utilisez un registre de schémas avec authentification :
-
Pour le registre de schémas AWS Glue : votre fonction a besoin des autorisations
glue:GetRegistryetglue:GetSchemaVersion. Elles permettent à votre fonction de rechercher et d’utiliser les règles de format de message stockées dans AWS Glue. -
Pour le registre de schémas Confluent
avec BASIC_AUTHouCLIENT_CERTIFICATE_TLS_AUTH: votre fonction a besoin de l’autorisationsecretsmanager:GetSecretValuepour accéder au secret contenant les informations d’authentification. Cela permet à votre fonction de récupérer le nom d’utilisateur/mot de passe ou les certificats nécessaires pour accéder au registre de schémas Confluent. -
Pour les certificats CA privés : votre fonction a besoin de l’autorisation secretsmanager:GetSecretValue pour le secret contenant le certificat. Cela permet à votre fonction de vérifier l’identité des registres de schémas qui utilisent des certificats personnalisés.
-
Cela correspond aux autorisations requises suivantes :
-
kafka:ListScramSecrets : permet de répertorier les secrets SCRAM pour l’authentification Kafka
-
secretsmanager:GetSecretValue : permet la récupération des secrets à partir de Secrets Manager
-
kms:Decrypt : permet le déchiffrement de données chiffrées en utilisant AWS KMS
-
glue:GetRegistry : autorise l’accès au registre de schémas AWS Glue
-
glue:GetSchemaVersion : permet de récupérer des versions de schéma spécifiques à partir du registre de schémas AWS Glue
En outre, si vous souhaitez envoyer des enregistrements d’invocations ayant échoué vers une destination en cas d’échec, vous devez disposer des autorisations suivantes en fonction du type de destination :
-
Pour les destinations Amazon SQS : sqs:SendMessage : permet d’envoyer des messages à une file d’attente Amazon SQS
-
Pour les destinations Amazon SNS : sns:Publish : permet de publier des messages sur une rubrique Amazon SNS
-
Pour les destinations de compartiment Amazon S3 : s3:PutObject et s3:ListBucket pour permettre d’écrire et de répertorier des objets dans un compartiment Amazon S3
Pour résoudre les erreurs d’authentification et d’autorisation, consultez Résolution des erreurs de mappage des sources d’événements Kafka.