Apache Kafka용 관리형 서비스 ACL 리소스를 만든 후 구성을 수정하여 ACL 항목 목록을 업데이트할 수 있습니다.
Apache Kafka용 관리형 서비스 ACL 리소스는 다음 두 가지 방법으로 업데이트할 수 있습니다.
전체 대체: 이 페이지에 설명된 대로 전체 ACL 항목 목록을 덮어씁니다.
증분 업데이트: ACL 항목 추가 및 ACL 항목 삭제 페이지에 설명된 대로 단일 ACL 항목을 추가하거나 삭제합니다.
업데이트 작업을 사용하여 ACL 항목 목록을 비워 둘 수는 없습니다. 리소스 패턴의 모든 항목을 삭제하려면 대신 Apache Kafka용 관리형 서비스 ACL 리소스를 삭제하세요.
필수 역할 및 권한
Managed Service for Apache Kafka ACL을 업데이트하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Managed Kafka ACL 편집자 (roles/managedkafka.aclEditor) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 Apache Kafka용 관리 서비스 ACL을 업데이트하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
Managed Service for Apache Kafka ACL을 업데이트하려면 다음 권한이 필요합니다.
-
전체 대체 (
UpdateAclAPI)를 사용하여 업데이트할 요청된 ACL에 이 권한을 부여합니다.managedkafka.acls.update -
증분 변경사항 (
AddAclEntry또는RemoveAclEntryAPI)을 사용하여 업데이트할 요청된 ACL에 이 권한을 부여합니다.managedkafka.acls.updateEntries
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
관리형 Kafka ACL 편집기 역할에 대한 자세한 내용은 Apache Kafka용 Google Cloud 관리형 서비스 사전 정의된 역할을 참고하세요.
etag 속성
etag 필드는 최적의 동시 실행 제어에 사용됩니다. etag는 GetAcl 및 CreateAcl 작업에 대한 응답으로 반환됩니다. 변경사항이 가져온 Apache Kafka용 관리형 서비스 ACL 리소스의 동일한 버전에 적용되도록 하려면 UpdateAcl 요청에 이 etag를 포함해야 합니다.
이렇게 하면 리소스가 동시에 수정된 경우 업데이트가 손실되지 않습니다.
etag의 터미널 T 문자는 반복 가능한 필드 항목의 최대 개수를 초과했기 때문에 응답에서 ACL 항목 목록이 잘렸음을 나타냅니다. 이 리소스 패턴에 대한 항목이 Kafka 클러스터에 직접 있지만 Apache Kafka용 관리형 서비스 ACL 리소스에 표시할 수 없습니다. 잘린 ACL 항목이 있는 리소스에는 전체 대체 업데이트가 지원되지 않습니다. 이 시나리오에서는 kafka-acls.sh 또는 AdminClient와 같은 표준 Apache Kafka API를 사용하여 ACL을 직접 관리합니다.
ACL 항목의 전체 교체
UpdateAcl API 메서드 또는
gcloud managed-kafka acls update 명령어를 사용하여 ACL 항목 목록을 완전히 대체할 수 있습니다. 리소스의 전체 acl_entries 필드는 업데이트 요청에서 전송된 목록으로 덮어쓰여집니다.
이 방법을 사용하여 목록을 수정하려면(예: 다른 항목을 유지하면서 단일 ACL 항목을 추가하거나 삭제) 다음 단계를 실행하세요.
describe 명령어를 사용하여 현재 ACL 항목 목록과 etag를 가져옵니다.
새 ACL 항목 목록을 구성합니다.
가져온 etag와 함께
gcloud managed-kafka acls update명령어를 실행합니다.
다음 섹션에서는 gcloud managed-kafka acls update 명령어를 사용하여 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 update명령어를 실행하여 모든 기존 ACL 항목을 지정된 항목으로 바꿉니다.ACL_ID(필수사항): 업데이트할 Apache Kafka용 관리형 서비스 ACL 리소스의 ID입니다. ACL ID에 관한 자세한 내용은 ACL ID를 참고하세요.CLUSTER_ID(필수): ACL 리소스가 포함된 클러스터의 ID입니다.LOCATION(필수): 클러스터가 있는 리전입니다. 리전에 대한 자세한 내용은 지원되는 위치를 참고하세요.ETAG_VALUE(필수): 이 ACL 리소스의 이전 설명 또는 생성 작업에서 가져온 etag 값입니다.--acl-entry(필수): new 목록에 포함할 ACL 항목을 지정합니다. 이 플래그를 반복하여 여러 항목을 포함할 수 있습니다. 기존 목록 전체가 명령어에 지정된 항목으로 대체됩니다.PRINCIPAL(필수): 이 ACL 항목의 주 구성원입니다.User:{google_service_account_email}형식 또는 와일드카드User:*을 사용합니다.OPERATION_TYPE(필수): 이 ACL 항목의 작업 유형입니다. 허용되는 값은ALL,READ,WRITE,CREATE,DELETE,ALTER,DESCRIBE,CLUSTER_ACTION,DESCRIBE_CONFIGS,ALTER_CONFIGS,IDEMPOTENT_WRITE입니다.PERMISSION_TYPE(필수): 업데이트할 권한 유형(ALLOW또는DENY)HOST(필수): 업데이트할 ACL 항목의 클라이언트 호스트입니다. Apache Kafka용 Google Cloud 관리형 서비스의 경우 이 값은 와일드 카드'*'로 설정해야 합니다.
gcloud managed-kafka acls update ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --etag=ETAG_VALUE \ --acl-entry=principal='PRINCIPAL',operation=OPERATION_TYPE,permission_type=PERMISSION_TYPE,host='*' \
다음을 바꿉니다.
전체 교체 예
이 명령어는 us-central1에 있는 test-kafka-cluster의 topic/orders 리소스 패턴에 대한 모든 기존 ACL 항목을 단일 새 항목으로 바꿉니다. 이 새 항목은 서비스 계정 producer-app@test-project.iam.gserviceaccount.com에 WRITE 권한을 부여합니다.
이 명령어에는 ACL 리소스의 현재 etag이 필요하며 이 예에서는 "AYk=Ags="입니다.
gcloud managed-kafka acls update topic/orders \
--cluster=test-kafka-cluster \
--location=us-central1 \
--project=test-project \
--etag='"AYk=Ags="' \
--acl-entry=principal='User:producer-app@test-project.iam.gserviceaccount.com',operation=WRITE,permission_type=ALLOW,host='*'
명령이 성공하면 출력에 새 aclEntries 목록과 새 etag을 포함한 업데이트된 ACL 리소스 구성이 표시됩니다. 이 ACL 리소스의 기존 항목이 삭제됩니다.
aclEntries:
- host: '*'
operation: WRITE
permissionType: ALLOW
principal: User:producer-app@test-project.iam.gserviceaccount.com
etag: '"Bcn=Def="' # Note: The etag value changes after a successful update.
name: projects/test-project/locations/us-central1/clusters/my-kafka-cluster/acls/topic/orders
resourcePatternType: TOPIC
ACL 항목의 증분 업데이트
AddAclEntry 및 RemoveAclEntry API 메서드 또는 해당 gcloud managed-kafka acls add-acl-entry 및 gcloud managed-kafka acls remove-acl-entry 명령어를 사용하여 전체 목록을 바꾸지 않고 개별 ACL 항목을 추가하거나 삭제할 수 있습니다. 이러한 메서드에는 etag가 필요하지 않습니다.
AddAclEntry를 사용하면 Apache Kafka용 관리형 서비스 ACL 리소스에 단일 새 ACL 항목이 추가됩니다. 이는 단일 새 Apache KafkaAclBinding를 만드는 것과 유사합니다. 자세한 내용은 ACL 항목 추가를 참고하세요.RemoveAclEntry를 사용하면 Managed Service for Apache Kafka ACL 리소스에서 기존 ACL 항목 하나가 삭제됩니다. 이는 단일 Apache KafkaAclBinding를 삭제하는 것과 유사합니다. 자세한 내용은 ACL 항목 삭제를 참고하세요.