エントリのリスト全体を置き換えることなく、ACL エントリと呼ばれる新しい権限ルールを 1 つ Managed Kafka ACL リソースに追加できます。これは、特定の権限を段階的に付与する場合に便利です。
このオペレーションは、単一の Apache Kafka ACL バインディングの作成に類似しています。ACL リソースがすでに存在している必要はなく、同時実行制御用の eTag も必要ありません。
必要なロールと権限
ACL エントリを追加するために必要な権限を取得するには、プロジェクトに対する Managed Kafka ACL 編集者 (roles/managedkafka.aclEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、ACL エントリの追加に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
ACL エントリを追加するには、次の権限が必要です。
-
親クラスタでこの権限を付与します。
managedkafka.acls.updateEntries
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
マネージド Kafka ACL 編集者(roles/managedkafka.aclEditor)ロールには、個々の ACL エントリを追加または削除するために必要な権限が含まれています。詳細については、Google Cloud Managed Service for Apache Kafka の事前定義ロールをご覧ください。
ACL エントリを追加する
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init gcloud managed-kafka acls add-acl-entryコマンドを実行します。gcloud managed-kafka acls add-acl-entry ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --principal=PRINCIPAL \ --operation=OPERATION \ --permission-type=PERMISSION_TYPE \ --host=HOST
次のように置き換えます。
ACL_ID(必須): ACL エントリを追加するマネージド Kafka ACL リソースの一意の ID。これは、新しいエントリが適用されるリソース パターンを示します。ACL ID の詳細については、ACL ID をご覧ください。CLUSTER_ID(必須): ACL リソースを含むクラスタの ID。LOCATION(必須): クラスタが配置されているリージョン。サポートされているロケーションをご覧ください。PRINCIPAL(必須): ACL エントリが適用されるプリンシパル(ユーザーまたはサービス アカウント)。User:{google_service_account_email}形式またはワイルドカードUser:*を使用します。OPERATION(必須): ACL エントリが付与または拒否するオペレーション タイプ。使用できる値は、ALL、READ、WRITE、CREATE、DELETE、ALTER、DESCRIBE、CLUSTER_ACTION、DESCRIBE_CONFIGS、ALTER_CONFIGS、IDEMPOTENT_WRITEです。PERMISSION_TYPE(省略可、デフォルト値ALLOW): 構成されたアクセスタイプ(ALLOWまたはDENY)。HOST(省略可、デフォルト値*): クライアント ホスト。Google Cloud Managed Service for Apache Kafka の場合、これはワイルドカード'*'に設定する必要があります。
サンプル コマンド
次のコマンドを実行して、特定のサービス アカウントが us-central1 リージョンのクラスタ test-cluster の test-topic という名前のトピックから読み取れるようにします。
gcloud managed-kafka acls add-acl-entry topic/test-topic \
--cluster=test-cluster \
--location=us-central1 \
--host='*' \
--operation=READ \
--permission-type=ALLOW \
--principal='User:service-account@test-project.iam.gserviceaccount.com' \
出力例を次に示します。
acl:
aclEntries:
- host: '*'
operation: READ
permissionType: ALLOW
principal: 'User:service-account@test-project.iam.gserviceaccount.com'
etag: W/another-new-etag
name: projects/test-project/locations/us-central1/clusters/test-cluster/acls/topic/test-topic
patternType: LITERAL
resourceName: test-topic
resourceType: TOPIC
aclCreated: false
add-acl-entry コマンドの出力には、結果の ACL 状態に関する情報が表示されます。
acl: このセクションでは、新しいエントリが追加された後に更新された ACL リソースについて説明します。aclEntries: この ACL のすべてのアクセス制御エントリを含むリストです。この例では、追加したエントリが追加されます。各エントリには次のフィールドがあります。host: ACL エントリのホスト。operation: このエントリが適用される Kafka オペレーション。permissionType: アクセスがALLOWかDENYか。principal: このエントリのユーザーまたはサービス アカウント。
etag: 更新された ACL のエンティティ タグ。これは、後続の更新中にオプティミスティック同時実行制御に使用されます。値は、エントリが追加された後に変更されます。name: ACL リソースの固有識別子。形式はprojects/{project}/locations/{location}/clusters/{cluster}/acls/{acl_id}です。patternType: この ACL のリソース パターンのタイプ。resourceName: この ACL が適用される Kafka リソースの名前。resourceType: Kafka リソースのタイプ。
aclCreated: このエントリの追加の結果として ACL リソースが作成されたかどうかを示すブール値。