

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# IAM アクセスコントロール
<a name="iam-access-control"></a>

Amazon MSK の IAM アクセス制御により、MSK クラスターの認証と認可の両方を処理できます。これにより、認証に 1 つのメカニズムを使用し、認可に別のメカニズムを使用する必要がなくなります。たとえば、クライアントがクラスターへの書き込みを試みると、Amazon MSK は IAM を使用して、そのクライアントが認証済みアイデンティティであるかどうか、およびクラスターへの作成が認可されているかどうかをチェックします。

IAM アクセスコントロールは Java クライアントと Java 以外のクライアント (Python、Go、JavaScript、.NET で記述された Kafka クライアントを含む) で機能します。Kafka バージョン 2.7.1 以降を搭載した MSK クラスターでは、非 Java クライアント向けの IAM アクセス制御が使用可能です。

IAM アクセス制御を可能にするために、Amazon MSK は Apache Kafka ソースコードに小さな変更を加えます。これらの変更によって、Apache Kafka のエクスペリエンスに目立った違いが生じることはありません。Amazon MSK はアクセスイベントをログに記録するため、それらを監査できます。

IAM アクセス制御を使用する MSK クラスターの Apache Kafka ACL API を呼び出すことができます。ただし、 Apache Kafka のアクセス制御リスト (ACL)は、 IAM 識別子に対する認証には影響しません。IAM 識別子へのアクセスを制御するには、IAM ポリシーを使用する必要があります。

**重要な考慮事項**  
MSK クラスターで IAM アクセス制御を使用する際には、以下の重要な考慮事項を念頭に置いてください。  
IAM アクセス制御は Apache ZooKeeper ノードには適用されません。これらのノードへのアクセスを制御する方法については、「[Amazon MSK クラスター内の Apache ZooKeeper ノードへのアクセスを制御する](zookeeper-security.md)」を参照してください。
クラスターが IAM アクセス制御を使用している場合、`allow.everyone.if.no.acl.found` Apache Kafka 設定は効果がありません。
IAM アクセス制御を使用する MSK クラスターの Apache Kafka ACL API を呼び出すことができます。ただし、 Apache Kafka のアクセス制御リスト (ACL)は、 IAM 識別子に対する認証には影響しません。IAM 識別子へのアクセスを制御するには、IAM ポリシーを使用する必要があります。

# Amazon MSK の IAM アクセス制御の仕組み
<a name="how-to-use-iam-access-control"></a>

Amazon MSK の IAM アクセス制御を使用するには、次のステップを実行します。これらの詳細については、以下のトピックで詳しく説明します。
+ [IAM アクセス制御を使用する Amazon MSK クラスターを作成する](create-iam-access-control-cluster-in-console.md) 
+ [IAM アクセス制御用にクライアントを設定する](configure-clients-for-iam-access-control.md)
+ [IAM ロールの認可ポリシーを作成する](create-iam-access-control-policies.md)
+ [IAM アクセス制御用のブートストラップブローカーを入手する](get-bootstrap-brokers-for-iam.md)

# IAM アクセス制御を使用する Amazon MSK クラスターを作成する
<a name="create-iam-access-control-cluster-in-console"></a>

このセクションでは AWS マネジメントコンソール、、 API、または を使用して、IAM アクセスコントロールを使用する Amazon MSK クラスター AWS CLI を作成する方法について説明します。既存のクラスターに対して IAM アクセス制御を有効にする方法については、「[Amazon MSK クラスターのセキュリティ設定を更新する](msk-update-security.md)」を参照してください。

**AWS マネジメントコンソール を使用して、IAM アクセスコントロールを使用するクラスターを作成する**

1. [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/) で Amazon MSK コンソールを開きます。

1. **Create cluster** (クラスターの作成) を選択します。

1. **Create cluster with custom settings** (カスタム設定でクラスターを作成) を選択します。

1. **Authentication** (認証) セクションで、**IAM access control** (IAMアクセス制御) を選択します。

1. クラスターを作成するための残りのワークフローを完了します。

**API または AWS CLI を使用して、IAM アクセスコントロールを使用するクラスターを作成する**
+ IAM アクセス制御を有効にしてクラスターを作成するには、[CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster) API または [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/create-cluster.html) CLI コマンドを使用して、`ClientAuthentication` パラメータに次の JSON を渡します：`"ClientAuthentication": { "Sasl": { "Iam": { "Enabled": true } }`。

# IAM アクセス制御用にクライアントを設定する
<a name="configure-clients-for-iam-access-control"></a>

クライアントが IAM アクセス制御を使用する MSK クラスターと通信できるようにするために、次のメカニズムのいずれかを使用できます。
+ SASL\$1OAUTHBEARER メカニズムを使用する Java 以外のクライアント設定
+ SASL\$1OAUTHBEARER メカニズムまたは AWS\$1MSK\$1IAM メカニズムを使用する Java のクライアント設定

## SASL\$1OAUTHBEARER メカニズムを使用して IAM を設定する
<a name="configure-clients-for-iam-access-control-sasl-oauthbearer"></a>

1. 以下の Python Kafka クライアントの例を使用して、 client.properties 設定ファイルを編集してください。設定の変更は他の言語でも同様です。

   ```
   from kafka import KafkaProducer
   from kafka.errors import KafkaError
   from kafka.sasl.oauth import AbstractTokenProvider
   import socket
   import time
   from aws_msk_iam_sasl_signer import MSKAuthTokenProvider
   
   class MSKTokenProvider():
       def token(self):
           token, _ = MSKAuthTokenProvider.generate_auth_token('<my AWS リージョン>')
           return token
   
   tp = MSKTokenProvider()
   
   producer = KafkaProducer(
       bootstrap_servers='<myBootstrapString>',
       security_protocol='SASL_SSL',
       sasl_mechanism='OAUTHBEARER',
       sasl_oauth_token_provider=tp,
       client_id=socket.gethostname(),
   )
   
   topic = "<my-topic>"
   while True:
       try:
           inp=input(">")
           producer.send(topic, inp.encode())
           producer.flush()
           print("Produced!")
       except Exception:
           print("Failed to send message:", e)
   
   producer.close()
   ```

1. 選択した設定言語用のヘルパーライブラリをダウンロードし、その言語ライブラリのホームページにある*「はじめに」*セクションの手順に従ってください。
   + JavaScript: [https://github.com/aws/aws-msk-iam-sasl-signer-js\$1getting-started](https://github.com/aws/aws-msk-iam-sasl-signer-js#getting-started)
   + Python: [https://github.com/aws/aws-msk-iam-sasl-signer-python\$1get-started](https://github.com/aws/aws-msk-iam-sasl-signer-python#get-started)
   + Go: [https://github.com/aws/aws-msk-iam-sasl-signer-go\$1getting-started](https://github.com/aws/aws-msk-iam-sasl-signer-go#getting-started)
   + .NET: [https://github.com/aws/aws-msk-iam-sasl-signer-net\$1getting-started](https://github.com/aws/aws-msk-iam-sasl-signer-net#getting-started)
   + JAVA: SASL\$1OAUTHBEARER の Java サポートは [https://github.com/aws/aws-msk-iam-auth/releases](https://github.com/aws/aws-msk-iam-auth/releases) jar ファイルを介して提供されます

## MSK カスタム AWS\$1MSK\$1IAM メカニズムを使用して IAM を設定する
<a name="configure-clients-for-iam-access-control-msk-iam"></a>

1. 以下を `client.properties` ファイルに追加します。*<PATH\$1TO\$1TRUST\$1STORE\$1FILE>*を、クライアント上のトラストストアファイルへの完全修飾パスに置き換えます。
**注記**  
特定の証明書を使用しない場合は、`client.properties` ファイルから `ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>` を削除できます。`ssl.truststore.location` に値を指定しない場合、Java プロセスではデフォルトの証明書が使用されます。

   ```
   ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
   sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
   ```

    AWS 認証情報用に作成した名前付きプロファイルを使用するには、クライアント設定ファイルに `awsProfileName="your profile name";` を含めます。名前付きプロファイルの詳細については、 AWS CLI ドキュメントの[「名前付きプロファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)」を参照してください。

1. 最新の安定した[aws-msk-iam-auth](https://github.com/aws/aws-msk-iam-auth/releases) JAR ファイルをダウンロードし、クラスパスに配置します。Maven を使用する場合は、次の依存関係を追加し、必要に応じてバージョン番号を調整します。

   ```
   <dependency>
       <groupId>software.amazon.msk</groupId>
       <artifactId>aws-msk-iam-auth</artifactId>
       <version>1.0.0</version>
   </dependency>
   ```

Amazon MSK クライアント プラグインは、Apache 2.0 ライセンスの下でオープンソース化されています。

# IAM ロールの認可ポリシーを作成する
<a name="create-iam-access-control-policies"></a>

クライアントに対応する IAM ロールに認可ポリシーを添付します。認可ポリシーでは、ロールに対して許可または拒否するアクションを指定します。クライアントが Amazon EC2 インスタンス上にある場合は、認可ポリシーをその Amazon EC2 インスタンスの IAM ロールに関連付けます。または、名前付きプロファイルを使用するようにクライアントを設定してから、認可ポリシーをその名前付きプロファイルのロールに関連付けることができます。 [IAM アクセス制御用にクライアントを設定する](configure-clients-for-iam-access-control.md) は、名前付きプロファイルを使用するようにクライアントを設定する方法を説明しています。

IAM ポリシーを作成する方法については、[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)を参照してください。

以下は、MyTestCluster という名前のクラスターの認可ポリシーの例です。`Action` 要素と `Resource` 要素のセマンティクスを理解するには、「[IAM 認可ポリシーアクションとリソースのセマンティクス](kafka-actions.md)」を参照してください。

**重要**  
IAM ポリシーに加えた変更は、IAM API と AWS CLI にすぐに反映されます。ただし、ポリシーの変更が有効になるまでにかなりの時間がかかる場合があります。ほとんどの場合、ポリシーの変更は1分以内に有効になります。ネットワークの状態により、遅延が増える場合があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:111122223333:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

データの生成や消費など、一般的な Apache Kafka のユースケースに対応するアクション要素を使用してポリシーを作成する方法については、「[クライアント認可ポリシーの一般的なユースケース](iam-access-control-use-cases.md)」を参照してください。

Kafka バージョン 2.8.0 以降では、**WriteDataIdempotently** アクセス許可は廃止されました ([KIP-679](https://cwiki.apache.org/confluence/display/KAFKA/KIP-679%3A+Producer+will+enable+the+strongest+delivery+guarantee+by+default))。デフォルトでは、`enable.idempotence = true` が設定されています。したがって、Kafka バージョン 2.8.0 以降では、IAM は Kafka ACL と同じ機能を提供しません。そのトピックへの `WriteData` アクセス権限を提供するだけでは、トピックに対して `WriteDataIdempotently` を実行することはできません。これは、`WriteData` が**すべて**のトピックに提供されている場合には該当しません。その場合は、`WriteDataIdempotently` は許可されます。これは、 IAM ロジックの実装と Kafka ACL の実装方法の違いによるものです。さらに、トピックにべき等的に書き込むには、`transactional-ids` へのアクセスも必要です。

この問題を回避するために、以下のようなポリシーを使用することが推奨されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster",
                "kafka-cluster:WriteDataIdempotently"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic",
                "arn:aws:kafka:us-east-1:123456789012:transactional-id/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*"
            ]
        }
    ]
}
```

------

この場合、`WriteData` への書き込みを許可する`TestTopic`と同時に`WriteDataIdempotently`、 クラスターへの冪等性書き込みを許可します。このポリシーは、必要な `transactional-id` リソースへのアクセスも追加します。

なぜなら、`WriteDataIdempotently` は、クラスターレベルのアクセス許可であるため、トピックレベルでは使用できません。もし、`WriteDataIdempotently` がトピックレベルに制限されている場合、このポリシーは機能しません。

# IAM アクセス制御用のブートストラップブローカーを入手する
<a name="get-bootstrap-brokers-for-iam"></a>

「[Amazon MSK クラスターのブートストラップブローカーを取得する](msk-get-bootstrap-brokers.md)」を参照してください。

# IAM 認可ポリシーアクションとリソースのセマンティクス
<a name="kafka-actions"></a>

**注記**  
Apache Kafka バージョン 3.8 以降を実行しているクラスターの場合、IAM アクセスコントロールはトランザクションを終了するための WriteTxnMarkers API をサポートしています。3.8 より前のバージョンの Kafka を実行しているクラスターの場合、IAM アクセスコントロールは WriteTxnMarkers を含む内部クラスターアクションをサポートしていません。これらの以前のバージョンでは、トランザクションを終了するには、IAM 認証の代わりに適切な ACLs で SCRAM または mTLS 認証を使用します。

このセクションでは、IAM 認可ポリシーで使用できるアクション要素とリソース要素のセマンティクスについて説明します。ポリシーの例については「[IAM ロールの認可ポリシーを作成する](create-iam-access-control-policies.md)」を参照してください。

## 認可ポリシーアクション
<a name="actions"></a>

次の表に、Amazon MSK の IAM アクセス制御を使用するときに認可ポリシーに含めることができるアクションを示します。表の*アクション*列のアクションを認可ポリシーに含める場合は、*必須アクション*列の対応するアクションも含める必要があります。


| アクション | 説明 | 必須アクション | 必要なリソース | サーバーレスクラスターに適用可能 | 
| --- | --- | --- | --- | --- | 
| kafka-cluster:Connect | クラスターに接続して認証するためのアクセス許可を付与します。 | なし | クラスター | はい | 
| kafka-cluster:DescribeCluster | Apache Kafka の DESCRIBE CLUSTER ACL に相当する、クラスターのさまざまな側面を記述するためのアクセス許可を付与します。 |  `kafka-cluster:Connect`  | クラスター | はい | 
| kafka-cluster:AlterCluster | Apache Kafka の ALTER CLUSTER ACL と同等の、クラスターのさまざまな側面を変更するためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeCluster`  | クラスター | いいえ | 
| kafka-cluster:DescribeClusterDynamicConfiguration | Apache Kafka の DESCRIBE\$1CONFIGSCLUSTER ACL に相当する、クラスターの動的設定を記述するためのアクセス許可を付与します。 |  `kafka-cluster:Connect`  | クラスター | いいえ | 
| kafka-cluster:AlterClusterDynamicConfiguration | Apache Kafka の ALTER\$1CONFIGSCLUSTER ACL に相当する、クラスターの動的設定を変更するためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | クラスター | いいえ | 
| kafka-cluster:WriteDataIdempotently | Apache Kafka の IDEMPOTENT\$1WRITECLUSTER ACL に相当する、クラスターにデータをべき等に書き込むためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:WriteData`  | クラスター | はい | 
| kafka-cluster:CreateTopic | Apache Kafka の CREATECLUSTER/TOPIC ACL に相当する、クラスター上にトピックを作成するためのアクセス許可を付与します。 |  `kafka-cluster:Connect`  | トピック | はい | 
| kafka-cluster:DescribeTopic | Apache Kafka の DESCRIBETOPIC ACL に相当する、クラスター上のトピックを記述するためのアクセス許可を付与します。 |  `kafka-cluster:Connect`  | トピック | はい | 
| kafka-cluster:AlterTopic | Apache Kafka の ALTER TOPIC ACL に相当する、クラスター上のトピックを変更するためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | トピック | はい | 
| kafka-cluster:DeleteTopic | Apache Kafka の DELETE TOPIC ACL に相当する、クラスター上のトピックを削除するためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | トピック | はい | 
| kafka-cluster:DescribeTopicDynamicConfiguration | Apache Kafka の DESCRIBE\$1CONFIGSTOPIC ACL に相当する、クラスター上のトピックの動的設定を記述するためのアクセス許可を付与します。 |  `kafka-cluster:Connect`  | トピック | はい | 
| kafka-cluster:AlterTopicDynamicConfiguration | Apache Kafka の ALTER\$1CONFIGSTOPIC ACL に相当する、クラスター上のトピックの動的設定を変更する許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration`  | トピック | はい | 
| kafka-cluster:ReadData | Apache Kafka の READ TOPIC ACL に相当する、クラスター上のトピックからデータを読み取りためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterGroup`  | トピック | はい | 
| kafka-cluster:WriteData | Apache Kafka の WRITE TOPIC ACL に相当する、クラスター上のトピックにデータを書き込みためのアクセス許可を付与します |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | トピック | はい | 
| kafka-cluster:DescribeGroup | Apache Kafka の DESCRIBE GROUP ACL に相当する、クラスター上のグループを記述するためのアクセス許可を付与します。 |  `kafka-cluster:Connect`  | グループ | はい | 
| kafka-cluster:AlterGroup | Apache Kafka の READ GROUP ACL に相当する、クラスター上のグループに参加するためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | グループ | はい | 
| kafka-cluster:DeleteGroup | Apache Kafka の DELETE GROUP ACL に相当する、クラスター上のグループを削除するためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | グループ | はい | 
| kafka-cluster:DescribeTransactionalId | Apache Kafka の DESCRIBE TRANSACTIONAL\$1ID ACL に相当する、クラスター上のトランザクション ID を記述するためのアクセス許可を付与します。 |  `kafka-cluster:Connect`  | transactional-id | はい | 
| kafka-cluster:AlterTransactionalId | Apache Kafka の WRITE TRANSACTIONAL\$1ID ACL に相当する、クラスター上のトランザクション ID を変更するためのアクセス許可を付与します。 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:WriteData`  | transactional-id | はい | 

コロンの後のアクションでは、アスタリスク (\$1) ワイルドカードを何度でも使用できます。以下は例です。
+ `kafka-cluster:*Topic` は、`kafka-cluster:CreateTopic`、`kafka-cluster:DescribeTopic`、`kafka-cluster:AlterTopic`、および `kafka-cluster:DeleteTopic` の略です。`kafka-cluster:DescribeTopicDynamicConfiguration` や `kafka-cluster:AlterTopicDynamicConfiguration` は含まれていません。
+ `kafka-cluster:*` はすべての権限を表します。

## 認可ポリシーリソース
<a name="msk-iam-resources"></a>

次の表は、Amazon MSK の IAM アクセスコントロールを使用するときに認可ポリシーで使用できる 4 種類のリソースを示しています。クラスターの Amazon リソースネーム (ARN) は、 から、 AWS マネジメントコンソール または [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) API または [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS CLI コマンドを使用して取得できます。次に、クラスター ARN を使用して、トピック、グループ、およびトランザクション ID の ARN を作成できます。認可ポリシーでリソースを指定するには、そのリソースのARNを使用します。


| [リソース]  | ARN 形式 | 
| --- | --- | 
| クラスター | arn:aws:kafka:region:account-id:cluster/cluster-name/cluster-uuid | 
| Topic | arn:aws: kafka:region:account-id:topic/cluster-name/cluster-uuid/topic-name | 
| Group | arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/group-name | 
| トランザクション ID | arn:aws:kafka:region:account-id:transactional-id/cluster-name/cluster-uuid/transactional-id | 

アスタリスク (\$1) ワイルドカードは、`:cluster/`、`:topic/`、`:group/`、および `:transactional-id/` の後に続く ARN の部分のどこでも何度でも使用できます。以下は、アスタリスク (\$1) ワイルドカードを使用して複数のリソースを参照する方法の例です。
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*`: クラスターの UUID に関係なく、MyTestCluster という名前のクラスター内のすべてのトピック。
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test`: 名前が MyTestCluster で、UUID が abcd1234-0123-abcd-5678-1234abcd-1 であるクラスター内で、名前が「\$1test」で終わるすべてのトピック。
+ `arn:aws:kafka:us-east-1:0123456789012:transactional-id/MyTestCluster/*/5555abcd-1111-abcd-1234-abcd1234-1`: アカウント内の MyTestCluster という名前のクラスターのすべてのインカネーションにわたる、トランザクション ID が 5555abcd-1111-abcd-1234-abcd1234-1 であるすべてのトランザクション。つまり、MyTestCluster という名前のクラスターを作成し、それを削除してから、同じ名前で別のクラスターを作成すると、このリソース ARN を使用して、両方のクラスターで同じトランザクション ID を表すことができます。ただし、削除されたクラスターにはアクセスできません。

# クライアント認可ポリシーの一般的なユースケース
<a name="iam-access-control-use-cases"></a>

次の表の最初の列は、いくつかの一般的なユースケースを示しています。クライアントに特定のユースケースの実行を許可するには、そのユースケースに必要なアクションをクライアントの認可ポリシーに含め、`Effect` を `Allow` に設定します。

Amazon MSK の IAM アクセス制御の一部であるすべてのアクションについては、「[IAM 認可ポリシーアクションとリソースのセマンティクス](kafka-actions.md)」を参照してください。

**注記**  
アクションはデフォルトで拒否されます。クライアントに実行を認可するすべてのアクションを明示的に許可する必要があります。


****  

| ユースケース | 必須アクション | 
| --- | --- | 
| 管理者 |  `kafka-cluster:*`  | 
| トピックを作成する |  `kafka-cluster:Connect` `kafka-cluster:CreateTopic`  | 
| データを生成する |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData`  | 
| データの使用 |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DescribeGroup` `kafka-cluster:AlterGroup` `kafka-cluster:ReadData`  | 
| データを無差別に生成する |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:WriteDataIdempotently`  | 
| トランザクションでデータを生成する |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:AlterTransactionalId`  | 
| クラスターの設定を説明する |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | 
| クラスターの設定を更新する |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration` `kafka-cluster:AlterClusterDynamicConfiguration`  | 
| トピックの設定を説明する |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` | 
| トピックの設定を更新する |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` `kafka-cluster:AlterTopicDynamicConfiguration`  | 
| トピックを変更する |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterTopic`  | 