重要

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

サービスアカウント

1 つのサービスアカウントは、プログラムで Confluent Cloud にアクセスする 1 つのアプリケーションに対応します。

サービスアカウントを使用して、Confluent Cloud へのアプリケーションアクセスを管理できます。アクセス許可を指定するには、ACLロールバインディング を特定のサービスアカウントに紐付けて使用します。サービスアカウントの ACL とロールバインディングは、管理者、または管理者と同様のロールを持つ組織内の別のユーザーによって設定されます。

サービスアカウントとは 組織レベル のリソースで、組織のサービスアカウントの数には制限 があります。

サービスアカウントは組織全体が対象になるので、リソース(開発クラスター、本稼働クラスター、Kafka、スキーマレジストリ など)ごとに別のサービスアカウントで API キーを所有することができます。一般的なユースケースでは、1 つのチームが Confluent Cloud ストリーミングプラットフォームを管理し、そのストリーミングプラットフォームを使用するさまざまなアプリケーションチームに対して(ACL を適用した)サービスアカウントを発行します。サービスアカウントは、Confluent Cloud Console にはログインできませんが、任意のタイプの API キー を所有できます。この API キーを CLI または API でのアクセスに使用できます。ユーザーが会社を離れたり役職が変わったりしてもアプリケーションは関係なく稼働し続けるので、特定のユーザーに結び付けられていない特殊な ID をアプリケーション(またはサービス)に使用する必要がある組織では特に、サービスアカウントが有用です。

注釈

特定のサービスアカウントに属することができる API キーの数には制限があります。詳しくは、「Confluent Cloud のサービスクォータ」を参照してください。

Confluent Cloud サービスアカウントを作成して、管理するには、次のいずれかの方法が使用できます。

以下に注意してください。

  • サービスアカウントを作成するには、OrganizationAdmin ロールが割り当てられている必要があります。詳細については、「Confluent Cloud RBAC ロール」を参照してください。

  • Confluent CLI を使用してサービスアカウントを作成する場合は、オプションで任意のタイプの API キー を作成し、その所有者をサービスアカウントにすることができます。

    注釈

    Kafka ACL は Kafka にのみ適用され、他のリソースタイプではサポートされません。このため、サービスアカウントに存在する ACL は、そのサービスアカウントから スキーマレジストリ API キーを作成するときに継承されません。

  • Confluent Cloud Console を使用してサービスアカウントを作成する場合は、Kafka API キーと Confluent Cloud API キーを作成し、その所有者をサービスアカウントにすることができます。

  • Cloud Console を使用して、サービスアカウントが所有する スキーマレジストリ API キーや ksqlDB API キーを作成することはできません。

API キーのタイプ Confluent Cloud Console で管理されるか Confluent CLI で管理されるか
Kafka
スキーマレジストリ ×
ksqlDB ×
Confluent Cloud

注意

ユーザーアカウントまたはサービスアカウントを削除すると、関連付けられている API キーもすべて削除されます。削除された API キーを使用しているクライアントアプリケーションはアクセスできなくなるので、ストリーミングアプリケーションが停止する可能性があります。ユーザーアカウントやサービスアカウントを削除する前に、必ず、そのアカウントが所有している API キーが使用されていないことを確認してください。

Confluent Cloud Console を使用したサービスアカウントの作成

Cloud Console を使用してサービスアカウントを作成できます。このワークフローには API キーの作成やペアリングも含まれていることに注意してください。

API キーとペアリングせずにサービスアカウントを作成する場合は、「confluent iam service-account create」を参照してください。

API キーを作成して既存のユーザーアカウントに関連付ける場合は、「既存のユーザーアカウントに関連付けられた Kafka API キーの作成」を参照してください。

Confluent Cloud Console を使用してサービスアカウントと API キーを作成するには、以下の手順に従います。

  1. API キーを作成するクラスターに移動し、API access タブ、+Add key の順にクリックします。

  2. 特定の範囲に制限されたリソースにアクセスできる API キーを作成するには、その API キーの所有者となるサービスアカウントを作成する必要があります。Create an API key associated with a new or existing service accountNext の順にクリックします。

    このオプションによって、リソース(この場合は Kafka クラスター)へのアクセスを管理するサービスアカウントを指定できます。本稼働環境での使用には、このオプションが理想的です。

  3. Create a new one をクリックして、新規サービスアカウントによって所有される API キーを作成します。新規サービスアカウントの名前と説明を入力し、Save and Next をクリックします。

    "既存の" サービスアカウントによって所有される API キーを作成する場合は、代わりに Use existing account をクリックします。既存のサービスアカウントを選択して次に進みます。

  4. サービスアカウントに、クラスター、コンシューマーグループ、トピック、トランザクション ID についての ACL を追加します。

    ../../_images/ccloud-new-service-account-cluster-acl.png

    クラスターの ACL

    クラスターの ACL の場合は、クラスター名を指定し、操作および対応するアクセス許可を選択します。さらに操作とアクセス許可を追加するには、+Add ACLs をクリックします。

    コンシューマーグループ、トピック、トランザクション ID の ACL

    ACL を適用するコンシューマーグループ ID、トピック名、またはトランザクション ID を選択します。ACL を特定のパターンタイプ(たとえば LITERAL や PREFIXED など)に適用する場合は、新規パターンを指定するか、既存のパターンから選択します。操作および対応するアクセス許可を指定します。さらに操作とアクセス許可を追加するには、+Add ACLs をクリックします。

    重要

    コンシューマーグループ、トピック、トランザクション ID の ACL は、そのリソースがまだ存在していなくても指定できます。たとえば、存在しないコンシューマーグループの ACL を作成した場合は、後でそのコンシューマーグループを作成し、ここで作成した ACL を使用するように構成することができます。

    Save and Next をクリックします。

  5. API キーとシークレットがサービスアカウントに対して生成されます。クラスターに接続するには、この API キーとシークレットが必要になります。

    ../../_images/cloud-kafka-api-key.png

    Save をクリックします。新規サービスアカウントと API キー、および関連付けられた ACL が作成されます。API access タブに戻ったら、新しく作成した API キーを検索して確認できます。

ksqlDB コンソールを使用したサービスアカウントの作成

新しい ksqlDB アプリケーションを作成するときに、新しいサービスアカウントをプロビジョニングすることができます。

  1. ナビゲーションバーで ksqlDB をクリックします。All ksqlDB Applications ページで Add application をクリックします。

  2. New application ページで Granular access をクリックし、Choose service account オプションを有効にします。

    ksqlDB Add Application ウィザードを示す Confluent Cloud のスクリーンショット。
  3. Create a new one をクリックして、新しいサービスアカウントの名前を入力します。

    ksqlDB Add Application ウィザードを示す Confluent Cloud のスクリーンショット。
  4. Add all required ACLs when your ksqlDB app is created をクリックします。新しいアプリケーションに適用される ACL を確認するには、View required ACLs をクリックします。

    ksqlDB Add Application ウィザードを示す Confluent Cloud のスクリーンショット。
  5. 新しい ksqlDB アプリケーションのプロビジョニングを構成するには、Continue をクリックします。

Confluent CLI を使用したサービスアカウントの作成と管理

以下の例は、任意のクラウドプロバイダーで実行されている Confluent Cloud に使用できる一般的なエンドツーエンドのワークフローを示しています。具体的には、この例では Confluent CLI を使用して次の操作を行う方法を示しています。

  • Kafka クラスターを作成し、それをアクティブにする
  • クラスター内にトピックを追加する
  • サービスアカウントと ACL をセットアップする
  • Kafka API キーとシークレットを作成する
  1. Confluent Cloud Kafka クラスター(sales092020)を作成します。

    confluent kafka cluster create sales092020 --cloud aws --region us-west-2 --type basic
    It may take up to 5 minutes for the Kafka cluster to be ready.
    +--------------+-----------------------------------------------------------+
    | ID           | lkc-abc123                                                |
    | Name         | sales092020                                               |
    | Type         | BASIC                                                     |
    | Ingress      |                                                       100 |
    | Egress       |                                                       100 |
    | Storage      |                                                      5000 |
    | Provider     | aws                                                       |
    | Availability | single-zone                                               |
    | Region       | us-west-2                                                 |
    | Status       | UP                                                        |
    | Endpoint     | SASL_SSL://pkc-v8wpn.us-west-2.aws.confluent.cloud:9092   |
    | ApiEndpoint  | https://pkac-95yx5.us-west-2.aws.confluent.cloud          |
    +--------------+-----------------------------------------------------------+
    

    注釈

    クラスター ID をメモします。後の手順でこの ID を指定する必要があります。ID がわからなければ、いつでも confluent kafka cluster list コマンドを実行して、すべての Kafka クラスターおよび対応するクラスター ID を表示できます。

  2. 新しく作成した Kafka クラスターをアクティブクラスターにします。

    confluent kafka cluster use lkc-abc123
    Set Kafka cluster "lkc-abc123" as the active cluster for environment "env-123ab"
    
  3. トピック(raw_pageview_data および analytics_enriched_events)を Kafka クラスターに作成します。

    confluent kafka topic create raw_pageview_data
    confluent kafka topic create analytics_enriched_events
    
  4. analytics という名前のサービスアカウントを作成します。説明を含める必要があります。

    confluent iam service-account create analytics –-description "My API analytics and secrets service account."
    +-------------+---------------------------------------+
    | ID          | sa-1a2b3c                             |
    | Name        | analytics                             |
    | Description | My API analytics and secrets service  |
    |             | account.                              |
    +-------------+---------------------------------------+
    

    ちなみに

    名前の要件:

    • 最大 64 文字
    • 使用できる文字:
      • Unicodeクラスの文字/記号/数字
      • 特殊文字: .,'’&_+|[]/-()
      • 空白文字

    サービスアカウント ID がわからなくなった場合は、confluent iam service-account list を実行して ID を取得します。

  5. トピック raw_pageview_data の READ ACL を作成します。

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

    オプションで、--prefix オプションを使用して ACL を作成できます。Kafka はこれを使用して、指定された値で始まるすべてのリソース名と突き合わせます。この例では、プレフィックス keyreaders を使用するすべてのコンシューマーグループに適用される READ ACL の作成方法を示しています。

    confluent kafka acl create --allow --service-account sa-1a2b3c --operation READ  --prefix --consumer-group keyreaders
      Principal        | Permission | Operation | ResourceType | ResourceName      | PatternType
    +------------------+------------+-----------+--------------+-------------------+------------+
      User:sa-1a2b3c   | ALLOW      | READ      | GROUP        | keyreaders        | PREFIXED
    
  6. 特定のプレフィックスを使用するすべてのトピックに対する ACL を作成します。この例では、プレフィックス analytics_ を持つトピックに対して CREATE ACL を指定する方法を示しています。このコマンドを実行すると、名前が analytics_ で始まるすべてのトピックに対する CREATE および WRITE アクセス権限を提供する ACL が作成されます。

    confluent kafka acl create --allow --service-account sa-1a2b3c --operation CREATE --prefix --topic analytics_
      Principal        | Permission | Operation | ResourceType | ResourceName      | PatternType
    +------------------+------------+-----------+--------------+-------------------+------------+
      User:sa-1a2b3c   | ALLOW      | CREATE    | TOPIC        | analytics_        | PREFIXED
    
  7. プレフィックスを使用して、analytics_enriched_events トピックに対する WRITE ACL を作成します。

    confluent kafka acl create --allow --service-account sa-1a2b3c --operation WRITE --prefix --topic analytics_
      Principal        | Permission | Operation | ResourceType | ResourceName      | PatternType
    +------------------+------------+-----------+--------------+-------------------+------------+
      User:sa-1a2b3c   | ALLOW      | WRITE     | TOPIC        | analytics_        | PREFIXED
    
  8. サービスアカウント sa-1a2b3c の Kafka API キーとシークレットを作成します。必ず、ここに示しているサービスアカウント ID と Kafka クラスター ID の値を実際の値に置き換えてください。

    confluent api-key create --service-account sa-1a2b3c --resource lkc-abc123
    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 | 12A3BCDEFGHI4JKL                                                 |
    | Secret  | aB+c12dEfghiJkLMNopqr3StUVWxyzabCdEFGHiJ4kL5mnop6QrS78TUVwxyzaB9 |
    +---------+------------------------------------------------------------------+
    

    警告

    API キーとシークレットを保存します。 クライアントアプリケーションを構成するときに、この情報が必要になります。キーとシークレットにアクセスして表示できるのは、このとき "だけ" であることに注意してください。

    オプションで、Confluent Cloud のメトリクス または Health+ を使用する場合には、Confluent Cloud API キー が必要です。

    confluent api-key create --service-account sa-1a2b3c --resource cloud
    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 | AB1CDEF2GHI3J4KL                                                 |
    | Secret  | j3Am6e+loCkCJUQ43iq9Es1z5KO7kKZQGmBvjg7jombv1PR0kxCvjsh6IDrz9LHY |
    +---------+------------------------------------------------------------------+
    

    Confluent Cloud API キーに対しては ACL はサポートされないことに注意してください。

重要

Confluent Cloud クラスターに接続するクライアントアプリケーションには、少なくとも次の 3 つのパラメーターが構成されている必要があります。

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

Confluent CLI のサービスアカウントコマンドの詳細については、「Confluent CLI」を参照してください。

Confluent Cloud サービスアカウントを使用した生成と消費

サービスアカウントを作成したら、それを使用して Confluent Cloud へのアプリケーションアクセスを制御し、トピックの生成および消費を行うことができます。

# Log in using the service account API key and secret
confluent context use --bootstrap <kafka-cluster-url> --api-key <api-key> --api-secret <secret>
# Produce to topic
confluent kafka topic produce <topic-service-account-writes-to>
# Consume from topic (-b consumes from beginning of topic)
confluent kafka topic consume -b <topic-service-account-reads-from>