

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Amazon MSK 事件來源映射的 Lambda 許可
<a name="with-msk-permissions"></a>

若要存取 Amazon MSK 叢集，函式和事件來源映射需要執行各種 Amazon MSK API 動作的許可。將這些許可新增至函式的[執行角色](lambda-intro-execution-role.md)。如果使用者需要存取權，請將必要許可新增至使用者或角色的身分政策。

[AWSLambdaMSKExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaMSKExecutionRole.html) 受管政策包含 Amazon MSK Lambda 事件來源映射所需的最低許可。若要簡化許可程序，您可以：
+ 將 [AWSLambdaMSKExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaMSKExecutionRole.html) 受管政策連接至您的執行角色。
+ 讓 Lambda 主控台為您產生許可。當您[在主控台中建立 Amazon MSK 事件來源映射](msk-esm-create.md#msk-console)時，Lambda 會評估您的執行角色，並在缺少任何許可時提醒您。選擇**產生許可**以自動更新您的執行角色。如果您手動建立或修改執行角色政策，或者政策連接到多個角色，則此功能不適用。請注意，使用[失敗時目的地](kafka-on-failure.md)或[AWS Glue 結構描述登錄](services-consume-kafka-events.md)檔等進階功能時，執行角色可能仍需要額外的許可。

**Topics**
+ [所需的許可](#msk-required-permissions)
+ [可選的許可。](#msk-optional-permissions)

## 所需的許可
<a name="msk-required-permissions"></a>

您的 Lambda 函數執行角色必須具有下列 Amazon MSK 事件來源映射的必要許可。這些許可包含在 [AWSLambdaMSKExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaMSKExecutionRole.html) 受管政策中。

### CloudWatch Logs 許可
<a name="msk-basic-permissions"></a>

下列許可允許 Lambda 在 Amazon CloudWatch Logs 中建立和存放日誌。
+ [logs:CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)
+ [logs:CreateLogStream](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogStream.html)
+ [日誌：PutLogEvents](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html)

### MSK 叢集許可
<a name="msk-cluster-permissions"></a>

下列許可允許 Lambda 代表您存取您的 Amazon MSK 叢集：
+ [kafka:DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html)
+ [kafka:DescribeClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html)
+ [kafka:GetBootstrapBrokers](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-bootstrap-brokers.html)

我們建議您使用 [kafka：DescribeClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html)，而非 [kafka：DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html)。v2 許可適用於佈建和無伺服器 Amazon MSK 叢集。您只需要政策中的其中一個許可。

### VPC 許可
<a name="msk-vpc-permissions"></a>

下列許可允許 Lambda 在連線至 Amazon MSK 叢集時建立和管理網路介面：
+ [ec2:CreateNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html)
+ [ec2:DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)
+ [ec2:DescribeVpcs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html)
+ [ec2:DeleteNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteNetworkInterface.html)
+ [ec2:DescribeSubnets](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html)
+ [ec2:DescribeSecurityGroups](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSecurityGroups.html)

## 可選的許可。
<a name="msk-optional-permissions"></a>

 您的 Lambda 函數可能需要許可，才能：
+ 存取跨帳戶 Amazon MSK 叢集。對於跨帳戶事件來源映射，您需要執行角色中的 [kafka：DescribeVpcConnection](https://docs.aws.amazon.com/msk/1.0/apireference/vpc-connection-arn.html)。建立跨帳戶事件來源映射的 IAM 主體需要 [kafka：ListVpcConnections](https://docs.aws.amazon.com/msk/1.0/apireference/vpc-connections.html)。
+ 存取 SCRAM 秘密 (若使用 [SASL/SCRAM 身分驗證](msk-cluster-auth.md#msk-sasl-scram))。此舉可讓函式透過使用者名稱與密碼連線至 Kafka。
+ 描述 Secrets Manager 秘密 (若使用 SASL/SCRAM 或 [mTLS 身分驗證](msk-cluster-auth.md#msk-mtls))。此舉可讓函式擷取安全連線所需的憑證或認證。
+ 如果您的 AWS Secrets Manager 秘密是使用 AWS KMS 客戶受管金鑰加密，請存取您的 AWS KMS 客戶受管金鑰。
+ 存取結構描述登錄檔秘密 (若使用的結構描述登錄檔需進行身分驗證)：
  + 對於 AWS Glue 結構描述登錄檔：您的函數需求`glue:GetRegistry`和`glue:GetSchemaVersion`許可。這些許可能夠讓函式查詢並使用儲存在 AWS Glue中的訊息格式規則。
  + 對於使用 `BASIC_AUTH` 或 `CLIENT_CERTIFICATE_TLS_AUTH` 的 [Confluent 結構描述登錄檔](https://docs.confluent.io/platform/current/schema-registry/security/index.html)：函式需要對包含身分驗證憑證的秘密具有 `secretsmanager:GetSecretValue` 許可。這可讓函式擷取存取 Confluent 結構描述登錄檔所需的使用者名稱/密碼或憑證。
  + 對於私有 CA 憑證：函式需要對包含憑證的秘密具有 secretsmanager:GetSecretValue 許可。此舉可讓函式驗證使用自訂憑證的結構描述登錄檔身分。
+ 如果您使用 IAM 身分驗證進行事件來源映射，請從主題存取 Kafka 叢集取用者群組和輪詢訊息。

 這些對應至下列必要許可：
+ [kafka:ListScramSecrets](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html) – 允許列出用於 Kafka 身分驗證的 SCRAM 秘密
+ [secretsmanager:GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) – 允許從 Secrets Manager 擷取秘密
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) - 允許使用 解密加密的資料 AWS KMS
+ [glue：GetRegistry](https://docs.aws.amazon.com/glue/latest/webapi/API_GetRegistry.html) - 允許存取 AWS Glue 結構描述登錄檔
+ [glue：GetSchemaVersion](https://docs.aws.amazon.com/glue/latest/webapi/API_GetSchemaVersion.html) - 啟用從結構描述登錄檔擷取特定 AWS Glue 結構描述版本
+ [kafka-cluster：Connect](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - 准許連線至叢集並進行驗證
+ [kafka-cluster：AlterGroup](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - 准許加入叢集上的群組，相當於 Apache Kafka 的 READ GROUP ACL
+ [kafka-cluster：DescribeGroup](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - 准許描述叢集上的群組，相當於 Apache Kafka 的 DESCRIBE GROUP ACL
+ [kafka-cluster：DescribeTopic](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - 准許描述叢集上的主題，相當於 Apache Kafka 的 DESCRIBE TOPIC ACL
+ [kafka-cluster：ReadData](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - 准許從叢集上的主題讀取資料，相當於 Apache Kafka 的 READ TOPIC ACL

 此外，若想將失敗調用的記錄傳送至失敗時目的地，根據目的地類型，您將需要下列許可：
+ 對於 Amazon SQS 目的地：[sqs:SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) – 允許將訊息傳送至 Amazon SQS 佇列
+ 對於 Amazon SNS 目的地：[sns:Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) – 允許將訊息發布至 Amazon SNS 主題
+ 對於 Amazon S3 儲存貯體目的地：[s3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 與 [s3：ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucket.html) – 允許在 Amazon S3 儲存貯體中寫入及列出物件

如需疑難排解身分驗證與授權錯誤的相關資訊，請參閱[對 Kafka 事件來源映射錯誤進行疑難排解](with-kafka-troubleshoot.md)。