重要

このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。

チュートリアル: Confluent Cloud でのアクセス管理

このチュートリアルでは、Confluent Cloud のユーザーアカウントとサービスアカウントを管理するためのワークフローについてエンドツーエンドで説明します。手順は次のとおりです。

ステップ 1: ユーザーを招待する

ステップ 1: ユーザーを招待する

ステップ 2: CLI、クラスター、および Kafka へのアクセス権限を構成する

  1. E メールの招待を受け入れ、ウェブブラウザーを使用してログインします。

  2. Confluent CLI をインストール する。

  3. confluent login コマンドを使用して Confluent CLI にログインします。

    confluent login
    

    認証情報を指定します。

    Enter your Confluent Cloud credentials:
    Email: jane.smith@big-data.com
    Password: ************
    

    出力は以下のようになります。

    Logged in as "jane.smith@big-data.com".
    Using environment "a-42619" ("default").
    

    注釈

    組織のデフォルトの環境にログインします。デフォルトとは別の環境で作業する場合は、ID(<env-id>)を使用して環境を設定します。

    confluent environment use <env-id>
    

    出力は以下のようになります。

    Now using a-4985 as the default (active) environment.
    
  4. confluent kafka cluster list コマンドを使用して、使用可能なクラスターを一覧表示します。

    confluent kafka cluster list
    

    出力は以下のようになります。

        Id         |    Name       |   Type   | Provider |   Region    | Availability | Status
    +--------------+---------------+----------+----------+-------------+--------------+----------+
      lkc-j5zrrm   | dev-test-01   | STANDARD | gcp      | us-central1 | single-zone  | UP
      lkc-382g7m   | dev-test-02   | BASIC    | aws      | us-west-2   | single-zone  | UP
      lkc-43npm    | prod-test-01  | BASIC    | aws      | us-west-2   | single-zone  | UP
      lkc-lq8dd    | stage-test-01 | BASIC    | aws      | us-west-2   | single-zone  | DELETED
    
  5. confluent kafka cluster use コマンドを使用して、クラスター dev-test-01(lkc-j5zrrm)に接続します。これが、コマンドが実行されるクラスターになります。必ず、この例に示しているクラスター ID を実際のクラスター ID に置き換えてください。

    confluent kafka cluster use lkc-j5zrrm
    

    出力は以下のようになります。

    Set Kafka cluster "lkc-j5zrrm" as the active cluster for environment "a-42619".
    
  6. API キーとシークレットを作成し、保存します。トピックに対して生成と消費を行うためには、この手順を実行する必要があります。この手順では、ユーザーアカウント(完全なアクセス許可を持つアカウント)の API キーを作成します。サービスアカウントの API キーを作成する方法、および ACL を使用してサービスアカウントにアクセス許可を付与する方法については、ステップ 5 およびステップ 6 を参照してください。

    API キーは、Confluent Cloud Console または Confluent CLI を使用して生成できます。必ず、API キーとシークレットを保存してください。

    • ウェブ UI を使用する場合は、API access タブ、+ Add key の順にクリックします。キーとシークレットを保存し、I have saved my API key and secret and am ready to continue の横にあるチェックボックスをオンにします。

      ../_images/cloud-api-key-confirm.png
    • Confluent CLI を使用する場合は、以下のコマンドを入力します(必ず、この例に示しているクラスター ID を、実際のクラスター ID に置き換えてください)。

      confluent api-key create --resource lkc-j5zrrm
      

      出力は以下のようになります。

      It may take a couple of minutes for the API key to be ready.
      Save the API key and secret. The secret is not retrievable later.
      +---------+------------------------------------------------------------------+
      | API Key | ABCD1EFGHIJK2LMN                                                 |
      | Secret  | abC1dEf23G4H567IJKLmn8O1PqrST1UvW0XyZAbcdefGHIjK23LMNOpQRSTUv4WX |
      +---------+------------------------------------------------------------------+
      
  7. 省略可能: confluent api-key store <key> <secret> を使用して API シークレットを追加します。CLI を使用して API キーを作成した場合は、シークレットは自動的にローカルに保管されます。一方、ウェブ UI または別のマシンの CLI を使用して API キーを作成した場合は、まず保管しないとシークレットを CLI で使用することができません。API キーの作成後にシークレットを取得することができないため、これは必須です。

    confluent api-key store <api-key> <api-secret> --resource <resource-id>
    
  8. Confluent CLI コマンドで使用する API キーを設定します。

    confluent api-key use <api-key> --resource <resource-id>
    

ステップ 3: トピックの作成と管理

  1. confluent kafka topic create コマンドを使用して、すべてデフォルト値でトピックを作成します。

    confluent kafka topic create myTopic1
    

    出力は以下のようになります。

    Created topic "myTopic1".
    

    別のトピックを追加します。

    confluent kafka topic create myTopic2
    
  2. パーティションが 6 つのトピックを作成します。

    confluent kafka topic create myTopic3 --partitions 6
    

    出力は以下のようになります。

    Created topic "myTopic3".
    
  3. confluent kafka topic list コマンドを使用してトピックを一覧表示します。

    confluent kafka topic list
    

    出力は以下のようになります。

        Name
    +----------+
      myTopic1
      myTopic2
      myTopic3
    
  4. confluent kafka topic delete コマンドを使用して、myTopic1 という名前のトピックを削除します。

    confluent kafka topic delete myTopic1
    

    出力は以下のようになります。

    Deleted topic "myTopic1".
    
  5. confluent kafka topic describe コマンドを使用して、トピックの詳細を記述します。

    confluent kafka topic describe myTopic2
    

    出力は以下のようになります。

    Topic: myTopic2 PartitionCount: 6 ReplicationFactor: 3
       Topic   | Partition | Leader | Replicas |   ISR
    +----------+-----------+--------+----------+---------+
      myTopic2 |         0 |      0 | [0 3 2]  | [0 3 2]
      myTopic2 |         1 |      2 | [2 1 0]  | [2 1 0]
      myTopic2 |         2 |      1 | [1 0 2]  | [1 2]
      myTopic2 |         3 |      3 | [3 2 1]  | [3 2 1]
      myTopic2 |         4 |      0 | [0 1 3]  | [0 1 3]
      myTopic2 |         5 |      2 | [2 3 0]  | [2 3 0]
    
  6. confluent kafka topic update コマンドを使用して myTopic2 構成を変更し、cleanup.policy を設定します。

    confluent kafka topic update myTopic2 --config cleanup.policy=compact
    

    出力は以下のようになります。

    Updated the following configs for topic "myTopic2":
           Name      |  Value
    +----------------+---------+
      cleanup.policy | compact
    

ステップ 4: 生成と消費

  1. confluent kafka topic produce コマンドを使用して、トピックにメッセージを生成します。

    confluent kafka topic produce myTopic3
    

    プロンプトでメッセージを入力し、メッセージごとに Return キーを押します。

    このコマンドウィンドウは次のようになります。

    confluent kafka topic produce myTopic3
    Starting Kafka Producer. ^C or ^D to exit
    hello
    cool topic
    did you get this message?
    first
    second
    third
    yes! I love this cool topic
    

    画面を 1 つに維持する場合は、^C と入力してプロデューサーを終了し、次の手順に示すように -b (または --from-beginning)を指定してコンシューマーを実行します。

  2. confluent kafka topic consume コマンドを使用して、トピックからメッセージを消費します。

    confluent kafka topic consume myTopic3 --from-beginning
    

    出力は以下のようになります。

    confluent kafka topic consume myTopic3 --from-beginning
    Starting Kafka Consumer. ^C or ^D to exit
    second
    did you get this message?
    first
    third
    cool topic
    hello
    yes! I love this cool topic
    

ステップ 5: サービスアカウントおよび API キーとシークレットのペアの作成

ステップ 2 では ユーザーアカウント の API キーを追加しました。この API キーには、super.user 権限があります。このステップでは、アクセス許可が制限されたアプリケーションアクセスを付与できるように、サービスアカウント を作成する方法について説明します。

  1. confluent iam service-account create コマンドを使用して、dev-apps という名前のサービスアカウントを作成します。

    confluent iam service-account create "dev-apps" \
    --description "Service account for dev apps"
    

    出力は以下のようになります。

    +----------------+----------------------------------+
    | ID             |                        sa-1a2b3c |
    | Name           | dev-apps                         |
    | Description    | Service account for dev apps     |
    +----------------+----------------------------------+
    

    このサービスアカウントに関連付けられている ID (この場合は sa-1a2b3c)をメモします。

  2. confluent api-key create コマンドを使用して、このサービスアカウントの API キーとシークレットのペアを作成します。これにはクラスター ID も必要です(confluent kafka cluster list の出力から取得できます)。

    confluent api-key create --service-account sa-1a2b3c --resource lkc-4xrp1
    
  3. API キーとシークレットをメモします。これを確認できるのはこのときだけです。

  4. このクラスターに接続するクライアントアプリケーションには、少なくとも次の 3 つの ID パラメーターを構成する必要があります。

    • API キー: 最初に API キーとシークレットのペアを作成するときに取得できます
    • API シークレット: 最初に API キーとシークレットのペアを作成するときに取得できます
    • bootstrap.servers: confluent kafka cluster describe の出力に表示される Endpoint に設定します

ステップ 6: ACL を使用したアクセス権限の管理

  1. confluent kafka acl create コマンドを使用して、トピックに生成する権限を dev-apps サービスアカウントに付与します。

      confluent kafka acl create --allow --service-account sa-1a2b3c --operation WRITE --topic myTopic2
    
      Principal          | Permission | Operation | ResourceType | ResourceName      | PatternType
    +--------------------+------------+-----------+--------------+-------------------+------------+
      User:sa-1a2b3c     | ALLOW      | WRITE     | TOPIC        | myTopic2          | LITERAL
    
  2. サービスでトピックを作成する必要もある場合は、新規トピックを作成する権限を dev-apps サービスアカウントに付与します。

      confluent kafka acl create --allow --service-account sa-1a2b3c --operation CREATE --topic "*"
    
      Principal          | Permission | Operation | ResourceType | ResourceName      | PatternType
    +--------------------+------------+-----------+--------------+-------------------+------------+
      User:sa-1a2b3c     | ALLOW      | CREATE    | TOPIC        | myTopic2          | LITERAL
    
  3. confluent kafka acl create コマンドを使用して、特定のトピックから消費する権限を dev-apps サービスアカウントに付与します。これには、トピックを指定するコマンドと、コンシューマーグループを指定するコマンドの 2 つが必要になることに注意してください。

    confluent kafka acl create --allow --service-account sa-1a2b3c --operation READ --topic myTopic2
    
      Principal          | Permission | Operation | ResourceType | ResourceName      | PatternType
    +--------------------+------------+-----------+--------------+-------------------+------------+
      User:sa-1a2b3c     | ALLOW      | READ      | TOPIC        | myTopic2          | LITERAL
    
    confluent kafka acl create --allow --service-account sa-1a2b3c --operation READ --consumer-group java_example_group_1
    
      Principal        | Permission | Operation | ResourceType | ResourceName         | PatternType
    +------------------+------------+-----------+--------------+----------------------+------------+
      User:sa-1a2b3c   | ALLOW      | READ      | GROUP        | java_example_group_1 | LITERAL
    
  4. confluent kafka acl list コマンドを使用して、dev-apps サービスアカウントのすべての ACL を一覧表示します。

    confluent kafka acl list --service-account sa-1a2b3c
    

    出力は以下のようになります。

      Principal         | Permission | Operation | ResourceType | ResourceName         | PatternType
    +-------------------+------------+-----------+--------------+----------------------+------------+
      User:sa-1a2b3c    | ALLOW      | CREATE    | TOPIC        | *                    | LITERAL
      User:sa-1a2b3c    | ALLOW      | READ      | TOPIC        | myTopic2             | LITERAL
      User:sa-1a2b3c    | ALLOW      | WRITE     | TOPIC        | myTopic2             | LITERAL
      User:sa-1a2b3c    | ALLOW      | READ      | GROUP        | java_example_group_1 | LITERAL
    
  5. プレフィックスを指定したリソースパターンで ACL を追加することができます。たとえば、demo で始まる名前のすべてのトピックについての ACL を追加できます。

    confluent kafka acl create --allow --service-account sa-1a2b3c --operation WRITE --topic demo --prefix
    
      Principal          | Permission | Operation | ResourceType | ResourceName   | PatternType
    +--------------------+------------+-----------+--------------+----------------+------------+
      User:sa-1a2b3c     | ALLOW      | WRITE     | TOPIC        | demo           | PREFIXED
    
  6. 該当するリソースのすべての名前に一致するワイルドカードを使用して ACL を追加することができます。たとえば、すべての名前を許可する ACL を追加することができます。

    confluent kafka acl create --allow --service-account sa-1a2b3c --operation WRITE --topic "*"
    
      Principal          | Permission | Operation | ResourceType | ResourceName    | PatternType
    +--------------------+------------+-----------+--------------+-----------------+------------+
      User:sa-1a2b3c     | ALLOW      | WRITE     | TOPIC        | *               | LITERAL
    

    注釈

    Windows ユーザーは、ワイルドカード文字を二重引用符で囲む必要があります。Linux ユーザーおよび MacOS ユーザーは、一重引用符と二重引用符のどちらでも使用できます。

  7. confluent kafka acl delete コマンドを使用して、dev-apps サービスアカウントから ACL を削除します。

    confluent kafka acl delete --allow --service-account sa-1a2b3c --operation WRITE --topic myTopic2
    
    Deleted ACLs.
    

ステップ 7: ログアウト

confluent logout コマンドを使用してログアウトします。

confluent logout