관리형 Kafka 액세스 제어 목록 (ACL)은 Apache Kafka용 관리형 서비스 클러스터 내 작업에 대한 세부적인 승인을 제공합니다. 관리형 Kafka ACL 리소스를 만들면 특정 Kafka 리소스 패턴에 대한 권한 규칙 집합이 정의됩니다. 기본 개념은 IAM 및 Kafka ACL을 사용한 액세스 제어를 참고하세요.
시작하기 전에
기존 Apache Kafka용 관리형 서비스 클러스터가 있어야 합니다.
필수 역할 및 권한
관리 Kafka ACL을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 관리 Kafka ACL 편집자 (roles/managedkafka.aclEditor) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 관리형 Kafka ACL을 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
관리형 Kafka ACL을 만들려면 다음 권한이 필요합니다.
-
상위 클러스터에 이 권한을 부여합니다.
managedkafka.acls.create
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
관리형 Kafka ACL 편집자 (roles/managedkafka.aclEditor) 역할은 ACL 리소스를 생성, 보기, 업데이트, 삭제할 권한을 부여합니다.
역할에 대한 자세한 내용은 Apache Kafka용 관리형 서비스 사전 정의된 역할을 참고하세요.
관리형 Kafka ACL의 속성
관리형 Kafka ACL 리소스를 만들 때는 다음 속성을 정의해야 합니다.
ACL ID
클러스터 및 위치 내 관리형 Kafka ACL 리소스의 고유 식별자입니다. ACL_ID 구조는 ACL 규칙이 적용되는 리소스 패턴 (리소스 유형, 리소스 이름, 패턴 유형)도 정의합니다.
ACL 바인딩의 대상으로 지정할 리소스 패턴에 따라 ACL_ID를 선택합니다.
클러스터:
cluster(클러스터 리소스 자체에 적용됨)구체적인 주제:
topic/{topic_name}특정 그룹:
consumerGroup/{group_name}특정 거래 ID:
transactionalId/{transactional_id}프리픽스가 있는 모든 주제:
topicPrefixed/{prefix}접두사가 있는 모든 소비자 그룹:
consumerGroupPrefixed/{prefix}접두사가 있는 모든 트랜잭션 ID:
transactionalIdPrefixed/{prefix}모든 주제:
allTopics(topic/*을 나타냄)모든 그룹:
allConsumerGroups(consumerGroup/*을 나타냄)모든 거래 ID:
allTransactionalIds(transactionalId/*을 나타냄)
자세한 내용은 Apache Kafka용 관리형 서비스 리소스 이름 지정 가이드라인을 참고하세요.
ACL ID는 생성 후 변경할 수 없습니다. 변경할 수 없습니다.
ACL 항목
ACL ID로 정의된 리소스 패턴에 적용되는 특정 권한 규칙 목록입니다.
리소스를 만들 때 하나 이상의 ACL 항목을 제공해야 합니다. 빈 목록은 허용되지 않습니다.
관리형 Kafka ACL 리소스당 허용되는 최대 항목 수는 100개입니다. 단일 리소스 패턴에 대한 규칙이 더 필요한 경우 표준 Apache Kafka 도구를 사용하여 ACL을 직접 관리해야 합니다.
각 ACL 항목에는 다음 필드가 포함됩니다.
주 구성원: 규칙이 적용되는 사용자 또는 서비스 계정입니다.
User:{google_service_account_email}형식을 사용하여 지정하거나 와일드 카드User:*를 사용합니다.작업: Kafka 작업 유형입니다(예:
ALL,READ,WRITE,CREATE,DELETE,ALTER,DESCRIBE,CLUSTER_ACTION,DESCRIBE_CONFIGS,ALTER_CONFIGS,IDEMPOTENT_WRITE(대소문자 구분 안 함)). 유효한 작업 및 리소스 유형 조합은 Apache Kafka 문서의 프로토콜의 작업 및 리소스를 참고하세요.권한 유형:
ALLOW또는DENY중 하나 (대소문자를 구분하지 않음)호스트: Apache Kafka용 관리형 서비스의 와일드카드
*로 설정해야 합니다.
--acl-entry 플래그를 사용하여 명령줄에서 직접 이러한 항목을 제공하거나 --acl-entries-from-file 플래그를 사용하여 JSON 또는 YAML 파일을 제공할 수 있습니다.
출력 전용 리소스 패턴 속성
ACL을 만들면 Managed Service for Apache Kafka에서 제공된 ACL ID를 기반으로 다음 리소스 패턴 필드를 채웁니다.
리소스 유형: 이름에서 파생된 ACL 리소스 유형입니다.
CLUSTER,TOPIC,GROUP,TRANSACTIONAL_ID중 하나입니다.리소스 이름: 이름에서 파생된 ACL 리소스 이름 (또는
PREFIXED패턴 유형의 경우 일치하는 접두사)CLUSTER리소스 유형의 경우 항상"kafka-cluster"입니다. 와일드 카드 리터럴"*"일 수 있습니다.ACL 패턴 유형: 이름에서 파생된 ACL 패턴 유형입니다.
LITERAL또는PREFIXED중 하나입니다.
이러한 필드는 출력 전용이며 관리형 Kafka ACL 리소스를 Kafka ACL 바인딩에 매핑할 때 편의를 위해 제공됩니다.
ETag
Etag는 동시 실행 제어에 사용됩니다. Etag는 GetAcl 및 CreateAcl 작업에 대한 응답으로 반환됩니다. 호출자는 변경사항이 Kafka 클러스터에 있는 동일한 버전의 ACL 항목에 적용되도록 UpdateAcl 요청에 해당 Etag를 넣어야 합니다.
Etag의 터미널 'T' 문자는 ACL 항목이 잘렸음을 나타냅니다. Kafka 클러스터에 ACL 항목이 더 있지만 반복 필드 제한으로 인해 ACL에 반환할 수 없습니다.
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 create명령어를 실행합니다.gcloud managed-kafka acls create ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --acl-entries-from-file=PATH_TO_FILE | \ --acl-entry=principal=PRINCIPAL,operation=OPERATION, \ permission-type=PERMISSION-TYPE,host=HOST \
다음을 바꿉니다.
ACL_ID(필수): 관리형 Kafka ACL 리소스의 고유 ID입니다. 이렇게 하면 리소스 패턴이 정의됩니다. ACL ID에 대한 자세한 내용은 ACL ID를 참고하세요.CLUSTER_ID(필수): ACL 리소스가 생성되는 클러스터의 ID입니다.LOCATION(필수): 클러스터가 있는 리전(예:us-central1)입니다. 지원되는 위치를 참고하세요.- 다음 플래그 중 하나를 지정하여 ACL 항목을 제공해야 합니다.
PATH_TO_FILE(필수): 필수 형식의 ACL 항목 목록이 포함된 로컬 JSON 또는 YAML 파일의 경로입니다.--acl-entry=principal=PRINCIPAL,operation=OPERATION, permission-type=PERMISSION-TYPE,host=HOST(필수): 단일 ACL 항목을 직접 지정합니다. 추가하려는 각 항목에 대해 이 플래그를 반복합니다.
--acl-entry 사용
gcloud managed-kafka acls create 명령어를 실행하여 ACL 항목을 직접 제공합니다. 명령어를 여러 번 실행하여 ACL의 ACL 항목을 여러 개 지정할 수 있습니다.
gcloud managed-kafka acls create ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --acl-entry=principal=PRINCIPAL,operation=OPERATION, \ permission-type=PERMISSION-TYPE,host=HOST\
다음을 바꿉니다.
ACL_ID(필수): 새 ACL 리소스의 ID입니다(예:topic/my-topic또는cluster).CLUSTER_ID(필수): 클러스터의 ID입니다.LOCATION(필수): 클러스터의 리전(예:us-central1)--acl-entry(필수): ACL 항목 하나를 지정합니다. 여러 항목에 대해 플래그를 반복합니다.PRINCIPAL_1,PRINCIPAL_2: ACL 항목의 주 구성원(예:'User:admin@example.iam.gserviceaccount.com또는'User:*')OPERATION_1,OPERATION_2:ALL또는READ과 같은 작업 유형입니다.PERMISSION_1,PERMISSION_2:ALLOW또는DENY과 같은 권한 유형입니다.HOST_1,HOST_2: ACL 항목의 호스트입니다. Apache Kafka용 Google Cloud 관리형 서비스의 경우 와일드 카드'*'로 설정해야 합니다.
--acl-entries-from-file 사용
필요한 ACL 항목을 YAML 형식으로 사용하여
acl_entries.yaml과 같은 로컬 파일을 만듭니다.--- aclEntries: - principal: User:admin@project.iam.gserviceaccount.com operation: READ permissionType: ALLOW host: "*" - principal: User:admin@project.iam.gserviceaccount.com operation: WRITE permissionType: ALLOW host: "*"파일을 참조하여
gcloud managed-kafka acls create명령어를 실행합니다.gcloud managed-kafka acls create ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --acl-entries-from-file=acl_entries.yaml다음을 바꿉니다.
ACL_ID(필수): 새 ACL 리소스의 ID입니다(예:topic/my-topic또는cluster).CLUSTER_ID(필수): 클러스터의 ID입니다.LOCATION(필수): 클러스터의 리전입니다(예:us-central1).acl_entries.yaml(필수): ACL 항목 목록이 포함된 로컬 파일의 경로입니다.