전체 항목 목록을 대체하지 않고 관리형 Kafka ACL 리소스에 ACL 항목이라는 단일 새 권한 규칙을 추가할 수 있습니다. 이는 특정 권한을 점진적으로 부여하는 데 유용합니다.
이 작업은 단일 Apache Kafka ACL 바인딩을 만드는 것과 유사합니다. ACL 리소스가 이미 존재해야 할 필요가 없으며 동시성 제어를 위한 eTag가 필요하지 않습니다.
필수 역할 및 권한
ACL 항목을 추가하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 관리형 Kafka ACL 편집자 (roles/managedkafka.aclEditor) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 ACL 항목을 추가하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
ACL 항목을 추가하려면 다음 권한이 필요합니다.
-
상위 클러스터에 이 권한을 부여합니다.
managedkafka.acls.updateEntries
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
관리형 Kafka ACL 편집자 (roles/managedkafka.aclEditor) 역할에는 개별 ACL 항목을 추가하거나 삭제하는 데 필요한 권한이 포함되어 있습니다. 자세한 내용은 Apache Kafka용 Google Cloud 관리형 서비스 사전 정의된 역할을 참고하세요.
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(선택사항, 기본값*): 클라이언트 호스트입니다. Apache Kafka용 Google Cloud 관리형 서비스의 경우 와일드 카드'*'로 설정해야 합니다.
명령어 샘플
다음 명령어를 실행하여 특정 서비스 계정이 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 리소스가 생성되었는지 여부를 나타내는 불리언 값입니다.