Event Streams 인스턴스에 대한 인증 관리
Event Streams 는 기본적으로 두 개의 SASL (Simple Authentication and Security Layer) 메커니즘을 Event Streams 인스턴스에 대한 인증 메소드로 지원합니다 (즉, PLAIN및 OAUTHBEARER).
SASL PLAIN으로 구성된 Kafka 클라이언트는 인증 프로세스에서 IAM API키를 일반 텍스트 비밀번호로 사용하며, Event Streams 는 확인을 위해 IAM에 API키를 전송합니다. 인증되면 이 클라이언트는 계속 연결되어 있으며 연결이 끊어지고 다시 연결하려고 할 때까지 재인증이 필요하지 않습니다.
SASL OAUTHBEARER로 구성된 Kafka 클라이언트는 인증 프로세스에서 IAM 액세스 토큰을 사용하며, Event Streams 는 IAM 공개 키를 통해 토큰을 확인합니다. IAM 액세스 토큰에는 만기 시간 (일반적으로 1시간) 이 있으므로 Kafka 클라이언트는 새 토큰을 다시 생성하고 이전 토큰이 만기 시간에 근접할 때 인증 프로세스를 다시 수행해야 합니다. 이 접근 방식은 두 가지 방법으로 SASL PLAIN과 비교하여 더 나은 보안을 제공합니다.
- API키는 항상 클라이언트 측에 있어 액세스 토큰을 생성하고 더 이상 네트워크를 통해 Kafka 브로커에 전송되지 않으므로 API키 노출 위험이 제거됩니다.
- 인증 프로세스는 액세스 토큰이 만료되고 이로 인해 토큰 노출 위험이 최소화될 때 정기적으로 발생합니다.
보다 안전한 인증을 위해 SASL OAUTHBEARER는 Kafka 클라이언트에 대해 유일하게 권장되는 인증 방법입니다. Kafka 클라이언트에서 SASL OAUTHBEARER를 구성하는 방법은 Kafka API 클라이언트 구성 을 참조하십시오.
엔터프라이즈 사용자에게는 엔터프라이즈 인스턴스에서 SASL PLAIN을 사용 안함으로 설정하는 옵션이 있습니다. 다음 명령을 사용하십시오.
ibmcloud resource service-instance-update <instance-name> -p '{"iam_token_only":true}'
Event Streams에 연결
외부 애플리케이션에 대한 보안 키 신임 정보를 가져오는 방법에 대한 자세한 정보는 Event Streams 을 참조하십시오.
Event Streams 리소스에 대한 권한 관리
각 리소스에 대해 각 사용자에게 부여할 액세스 권한을 관리하는 위한 세부적인 방식으로 Event Streams 리소스의 보안을 설정할 수 있습니다.
IAM 정책 및 권한을 변경하면 기본 서비스에 반영되는 데 몇 분 정도 걸릴 수 있습니다.
어떻게 보안을 설정할 수 있습니까?
Event Streams 내에서 다음 자원에 대한 보안 액세스 권한이 있습니다.
- 클러스터(클러스터): 서비스에 연결할 수 있는 애플리케이션 및 사용자를 제어할 수 있습니다.
- 주제(주제): 사용자 및 애플리케이션이 주제에 대해 작성, 삭제, 읽기 및 쓰기 기능을 제어할 수 있습니다.
- 이용자 그룹(그룹): 이용자 그룹에 가입하는 애플리케이션의 기능을 제어할 수 있습니다.
- 생성자 트랜잭션(txnid): Kafka에서 트랜잭션 생성자 기능을 사용하는 기능을 제어할 수 있습니다(즉, 다중 파티션에서 단일, 아토믹 쓰기).
각 리소스에 대해 사용자에게 할당할 수 있는 액세스 수준(역할이라고도 함)은 다음과 같습니다.
| 액세스 역할 | 조치에 대한 설명 | 예제 조치 |
|---|---|---|
| 독자 | 자원 보기와 같은 Event Streams 내에서 읽기 전용 조치를 수행하십시오. | 클러스터 자원 유형에 읽기 액세스를 지정하여 앱이 클러스터에 연결하도록 허용합니다. |
| 작성자 | 작성자는 Event Streams 리소스 편집을 포함하여 독자 역할 이상의 권한을 보유합니다. | 토픽 자원 및 토픽 이름 유형에 쓰기 액세스를 지정하여 애플리케이션이 토픽에 대해 생성하도록 허용합니다. |
| 관리자 | 관리자는 권한 부여된 조치를 완료하기 위해 작성자 역할 이상의 권한을 보유합니다. 또한 Event Streams 리소스를 작성하고 편집할 수 있습니다. | Event Streams 인스턴스에 대한 관리 액세스 권한을 지정하여 모든 리소스에 대한 전체 액세스를 허용합니다. |
액세스 권한을 지정할 수 있는 방법은 무엇입니까?
Cloud IAM(Identity and Access Management) 정책이 제어될 리소스에 첨부되어 있습니다. 각 정책은 특정 사용자에게 필요한 액세스 수준과 리소스 또는 리소스 집합에 대한 액세스 권한을 정의합니다. 정책은 다음 정보로 구성됩니다.
- 정책이 적용할 서비스의 유형입니다. 예를 들어, Event Streams입니다. 모든 서비스 유형을 포함하도록 정책의 범위를 설정할 수 있습니다.
- 보안을 설정할 서비스의 인스턴스입니다. 서비스 유형의 모든 인스턴스를 포함하도록 정책의 범위를 설정할 수 있습니다.
- 보안을 설정할 리소스의 유형입니다. 올바른 값은
cluster,topic,group,schema또는txnid입니다. 유형 지정은 선택사항입니다. 유형을 지정하지 않으면 정책은 서비스 인스턴스의 모든 리소스에 적용됩니다. 둘 이상의 리소스 유형을 지정하려는 경우에는 리소스당 하나의 정책을 작성해야 합니다. - 보안을 설정할 리소스입니다.
topic,group,schema및txnid유형의 리소스를 지정하십시오. 리소스를 지정하지 않으면 정책은 서비스 인스턴스에 지정된 유형의 모든 리소스에 적용됩니다. - 사용자에게 할당된 역할입니다. 예를 들면, 독자, 작성자 또는 관리자입니다.
IAM에 대한 자세한 정보는 IBM Cloud Identity and Access Management를 참조하십시오.
정책을 설정하는 방법에 대한 예는 IBM Cloud IAM Service ID 및 API 키를 참조하세요.
와일드카드 지정
Event Streams에서 리소스 그룹에 대한 정책을 설정하기 위해 IAM 와일드카드 지정 기능을 이용할 수 있습니다. 예를 들어 모든 토픽에 Dept1_Topic1 및 Dept1_Topic2 같은 이름을 지정하면 Dept1_* 하는 토픽에 대한 정책을 설정할 수 있으며 이러한 정책은 해당 접두사가 붙은 모든 토픽에 적용됩니다. 자세한 내용은 와일드카드 정책을 사용하여 액세스 권한 할당하기를 참조하세요.
기본 보안 설정은 무엇입니까?
기본적으로, Event Streams가 프로비저닝되는 경우 프로비저닝한 사용자에게는 모든 인스턴스의 리소스에 대한 관리자 역할이 부여됩니다. 또한 동일한 계정에서 '모든' 서비스 또는 '모든' Event Streams 서비스 인스턴스에 대한 관리자 역할을 가진 모든 사용자도 전체 액세스 권한을 가집니다.
그런 다음 더 많은 정책을 적용하여 다른 사용자에게 액세스를 확장할 수 있습니다. 전체로 Event Streams에 적용하거나 또는 Event Streams 내의 개별 리소스에 적용하도록 정책의 범위를 설정할 수 있습니다. 자세한 내용은 일반적인 작업을 참조하세요.
계정에 대한 관리 역할이 있는 사용자만 사용자에게 정책을 할당할 수 있습니다. IBM Cloud 대시보드를 사용하거나 ibmcloud 명령을 사용하여 정책을 지정하십시오.
공통 조치
다음 표에서는 일부 공통 Event Streams 조치 및 지정해야 하는 액세스를 요약합니다.
클러스터 요구사항
클러스터 자원에 대한 액세스를 제어하여 서비스에 연결할 수 있는 애플리케이션 및 사용자를 판별할 수 있습니다. 아래 자원 유형에 필요한 정책 외에도 ResourceType: Cluster 및 Role: Reader, Writer, Manager 에 대한 액세스가 필요합니다.
작성자 조치
다음 표에서는 Event Streams에 메시지를 생성하는 사용자 또는 애플리케이션에 필요한 역할 및 자원 요구사항을 설명합니다. 이 자원 유형에 필요한 정책 외에도 ResourceType: Cluster 및 Role: Reader, Writer, Manager 에 대한 액세스가 필요합니다.
| 작성자 조치 | 토픽 | 그룹 | txnid |
|---|---|---|---|
| 주제에 메시지를 보냅니다. | 작성자 | 작성자 [1] | |
| 앱이 트랜잭션 방식으로 토픽을 생성하도록 허용합니다. | 작성자 | 독자 | 작성자 |
| 트랜잭션을 초기화합니다. | 작성자 | ||
| 트랜잭션을 커미트합니다. | 작성자 | 작성자 | |
| 트랜잭션을 중단합니다. | 작성자 | ||
| 트랜잭션에 오프셋을 전송합니다. | 독자 | 작성자 |
이용자 조치
다음 표에서는 Event Streams의 메시지를 이용하는 사용자 또는 애플리케이션에 필요한 역할 및 자원 요구사항을 설명합니다. 이 자원 유형에 필요한 정책 외에도 ResourceType: Cluster 및 Role: Reader, Writer, Manager 에 대한 액세스가 필요합니다.
| 이용자 조치 | 토픽 | 그룹 | txnid |
|---|---|---|---|
| 앱이 주제(소비자 그룹)를 소비하도록 허용합니다. | 독자 | 독자 [2] | |
| 앱이 특정 주제(소비자 그룹 없음)에서 연결하여 사용할 수 있도록 허용합니다. | 독자 | ||
| 앱이 모든 주제(소비자 그룹 없음)에서 연결하고 사용할 수 있도록 허용합니다. | 독자 | ||
| Kafka Streams를 사용하십시오. | 관리자 | 독자 | |
| 이용자 그룹을 삭제하십시오. | 관리자 | ||
| 지정 | 독자 | ||
| 비동기 커미트 | 독자 | 독자 | |
| 커미트 동기화. | 독자 | 독자 | |
| 재조정을 강제 실행합니다. | 독자 | ||
| 의견조사. | 독자 | ||
| 구독. | 독자 | ||
| 등록 취소. | 독자 | 작성자 |
관리 조치
이 자원 유형에 필요한 정책 외에도 ResourceType: Cluster 및 Role: Reader, Writer, Manager 에 대한 액세스가 필요합니다.
| 관리 조치 | 토픽 | 그룹 | txnid |
|---|---|---|---|
| 토픽 구성을 대체하십시오. | 관리자 | ||
| 이용자 그룹 오프셋을 변경하십시오. | 독자 | 독자 | |
| 파티션을 작성하십시오. | 관리자 | ||
| 토픽을 작성하십시오. | 관리자 | ||
| 이용자 그룹 오프셋을 삭제하십시오. | 독자 | 관리자 | |
| 이용자 그룹을 삭제하십시오. | 관리자 | ||
| 레코드를 삭제합니다. | 관리자 | ||
| 주제를 삭제하십시오. | 관리자 | ||
| 작성자를 설명합니다. | 독자 | ||
| 생산자를 울타리합니다. | 작성자 | ||
| 토픽 구성을 증분식으로 대체하십시오. | 관리자 | ||
| 이용자 그룹에서 구성원을 제거합니다. | 독자 |
스키마 레지스트리 조치
스키마 레지스트리 조치를 사용하여 아티팩트 또는 아티팩트 버전 작성, 업데이트 및 삭제와 같은 스키마 버전을 변경할 수 있습니다 (엔터프라이즈 플랜만 해당). 아티팩트 는 Event Streams 가 관련 스키마를 설명하는 데 사용하는 용어이며, 종종 특정 Kafka 주제와 연관되어 사용됩니다. 주제 라는 용어는 종종 동일한 개념을 설명하는 데 사용됩니다. 자세한 정보는 Event Streams 스키마 레지스트리 사용 을 참조하십시오. 이 자원 유형에 필요한 정책 외에도 ResourceType: Cluster 및 Role: Reader, Writer, Manager 에 대한 액세스가 필요합니다.
| 스키마 레지스트리 조치 | 스키마 |
|---|---|
| 최신 아티팩트를 가져오십시오. | 독자 |
| 버전을 나열합니다. | 독자 |
| 버전을 가져오십시오. | 독자 |
| 컨텐츠별로 메타데이터를 가져옵니다. | 독자 |
| 메타데이터를 가져오십시오. | 독자 |
| 버전 메타데이터를 가져오십시오. | 독자 |
| 입력 ID로 식별된 스키마 문자열을 가져옵니다. | 독자 |
| 입력 ID로 식별된 스키마만 검색합니다. | 독자 |
| 입력 ID로 식별된 주제 버전 쌍을 가져옵니다. | 독자 |
| 지정된 주제 아래에 등록된 버전 목록을 가져옵니다. | 독자 |
| 아티팩트 호환성 규칙을 가져옵니다. | 독자 |
| 이 주제 아래에 등록된 스키마의 특정 버전을 가져오십시오. | 독자 |
| 이 주제의 지정된 버전에 대한 스키마를 가져옵니다. | 독자 |
| 지정된 주제 아래에 새 스키마를 등록하십시오 (버전이 이미 있는 경우). | 독자 |
| 스키마가 지정된 주제 아래에 이미 등록되어 있는지 확인하십시오. | 독자 |
| 지정된 주제 및 버전이 있는 스키마를 참조하는 스키마의 ID 목록을 가져옵니다. | 독자 |
| 호환성을 위해 주제 스키마의 특정 버전에 대해 입력 스키마를 테스트합니다. | 독자 |
| 주제에서 하나 이상의 버전에 대해 스키마에 대한 호환성 검사를 수행하십시오. | 독자 |
| 주제에 대한 호환성 레벨을 가져옵니다. | 독자 |
| 지정된 주제 아래에 새 스키마를 등록합니다 (버전을 작성할 경우). | 작성자 |
| 아티팩트를 작성하십시오. | 작성자 |
| 아티팩트를 업데이트합니다. | 작성자 |
| 아티팩트 사용 안함. | 작성자 |
| 버전을 작성하십시오. | 작성자 |
| 버전을 삭제하십시오. | 관리자 |
| 아티팩트 상태를 업데이트합니다. | 관리자 |
| 버전 상태를 업데이트합니다. | 관리자 |
| 아티팩트를 삭제하십시오. | 관리자 |
| 아티팩트 호환성 규칙을 작성하십시오. | 관리자 |
| 아티팩트 호환성 규칙을 업데이트합니다. | 관리자 |
| 지정된 주제에 대한 호환성 레벨을 업데이트합니다. | 관리자 |
| 아티팩트 호환성 규칙을 삭제하십시오. | 관리자 |
| 등록된 경우 지정된 주제 및 연관된 호환성 레벨을 삭제합니다. | 관리자 |
| 이 주제에 등록된 스키마의 특정 버전을 삭제합니다. | 관리자 |
| 지정된 주제 레벨 호환성 레벨 구성을 삭제하고 글로벌 기본값으로 되돌립니다. | 관리자 |
| 글로벌 호환성 규칙을 업데이트하십시오. [3] | |
| 글로벌 호환성 레벨을 업데이트하십시오. [4] |
스키마 레지스트리 호환성 조치
기존 애플리케이션과의 상호 운영을 위해 Event Streams 스키마 레지스트리는 Confluent Schema Registry API v7.2 의 서브세트를 지원합니다. 이러한 조치를 수행하려면 다음과 같은 자원 레벨 액세스 권한이 필요합니다.
| 스키마 레지스트리 호환성 조치 | 스키마 |
|---|---|
| 입력 ID로 식별된 스키마 문자열을 가져옵니다. | 독자 |
| 입력 ID로 식별된 스키마만 검색합니다. | 독자 |
| 스키마 레지스트리에 등록된 스키마 유형을 가져오십시오. | |
| 입력 ID로 식별된 주제 버전 쌍을 가져옵니다. | 독자 |
| 등록된 주제 목록을 가져옵니다. | |
| 지정된 주제 아래에 등록된 버전 목록을 가져옵니다. | 독자 |
| 등록된 경우 지정된 주제 및 연관된 호환성 레벨을 삭제합니다. | 관리자 |
| 이 주제 아래에 등록된 스키마의 특정 버전을 가져오십시오. | 독자 |
| 이 주제의 지정된 버전에 대한 스키마를 가져옵니다. | 독자 |
| 지정된 주제 아래에 새 스키마를 등록합니다. | 리더기/기록기 [5] |
| 스키마가 지정된 주제 아래에 이미 등록되어 있는지 확인하십시오. | 독자 |
| 이 주제 아래에 등록된 스키마의 특정 버전을 삭제합니다. | 관리자 |
| 지정된 주제 및 버전이 있는 스키마를 참조하는 스키마의 ID 목록을 가져옵니다. | 독자 |
| 호환성을 위해 주제 스키마의 특정 버전에 대해 입력 스키마를 테스트합니다. | 독자 |
| 주제에서 하나 이상의 버전에 대해 스키마에 대한 호환성 검사를 수행하십시오. | 독자 |
| 글로벌 호환성 레벨을 업데이트합니다. [6] | |
| 글로벌 호환성 레벨을 가져옵니다. | |
| 지정된 주제에 대한 호환성 레벨을 업데이트합니다. | 관리자 |
| 주제에 대한 호환성 레벨을 가져옵니다. | 독자 |
| 지정된 주제 레벨 호환성 레벨 구성을 삭제하고 글로벌 기본값으로 되돌립니다. | 관리자 |
Schema Registry에 대한 액세스 관리
스키마 레지스트리의 권한 부여 모델은 이 문서의 Event Streams 리소스에 대한 권한 부여 관리 섹션에 설명된 것과 동일한 스타일의 정책을 사용합니다.
IAM 리소스
새로운 schema IAM 리소스 유형을 사용하면 다음 예제에서와 같이 다양한 수준의 세분성을 사용하여 액세스를 제어하는 정책을 만들 수 있습니다.
- 특정 스키마.
- 와일드카드 표현식으로 선택한 스키마 집합입니다.
- IBM Event Streams의 인스턴스에 의해 저장된 모든 스키마입니다.
- 계정에 있는 IBM Event Streams의 모든 인스턴스에 저장된 모든 스키마입니다.
Event Streams에는 이미 클러스터 리소스 유형의 개념이 있습니다. 서비스 인스턴스에 대한 모든 액세스를 제어하는 데 사용되며, 리더의 최소 역할은 Kafka 또는 HTTPS 엔드포인트에 액세스하는 데 필요합니다. 이러한 클러스터 리소스 유형의 사용은 스키마 레지스트리에도 적용되며, 레지스트리에 액세스하려면 최소 리더 역할이 필요합니다.