10.2. 보안
AMQ Streams는 시크릿을 사용하여 Kafka 클러스터, 클라이언트 및 사용자의 개인 및 공개 키 인증서를 저장합니다. 시크릿은 Kafka 브로커 간 TLS 암호화 연결을 설정하고 브로커와 클라이언트 간의 TLS 암호화 연결을 설정하는 데 사용됩니다. 상호 TLS 인증에도 사용됩니다.
클러스터 및 클라이언트 보안은 항상 쌍입니다. 하나는 공개 키가 포함되어 있고 개인 키가 포함되어 있습니다.
- 클러스터 시크릿
- 클러스터 시크릿에는 Kafka 브로커 인증서에 서명하는 클러스터 CA 가 포함되어 있습니다. 클라이언트는 인증서를 사용하여 Kafka 클러스터와 TLS 암호화 연결을 설정합니다. 인증서는 브로커 ID를 확인합니다.
- 클라이언트 시크릿
- 클라이언트 시크릿에는 사용자가 자체 클라이언트 인증서에 서명할 수 있는 클라이언트 CA 가 포함되어 있습니다. 이를 통해 Kafka 클러스터에 대한 상호 인증을 허용합니다. 브로커는 인증서를 통해 클라이언트의 ID를 검증합니다.
- 사용자 시크릿
- 사용자 시크릿에는 개인 키와 인증서가 포함되어 있습니다. 새 사용자를 생성할 때 클라이언트 CA에서 시크릿을 생성하고 서명합니다. 키와 인증서는 클러스터에 액세스할 때 사용자를 인증하고 권한을 부여하는 데 사용됩니다.
10.2.1. PEM 및 PKCS #12 형식의 시크릿 링크 복사링크가 클립보드에 복사되었습니다!
보안에서는 PEM 및 PKCS #12 형식으로 개인 키와 인증서를 제공합니다. 클라이언트에 적합한 형식을 사용합니다. PEM 형식으로 개인 키와 인증서를 사용하면 사용자가 시크릿에서 가져온 후 애플리케이션에서 사용할 해당 신뢰 저장소 또는 키 저장소를 생성해야 합니다. PKCS #12 스토리지는 직접 사용할 수 있는 신뢰 저장소 또는 키 저장소를 제공합니다.
PKCS #12는 암호화 오브젝트를 암호 보호를 사용하여 단일 파일에 저장하기 위한 아카이브 파일 형식(.p12)을 정의합니다. PKCS #12를 사용하여 한 곳에서 인증서와 키를 관리할 수 있습니다.
각 시크릿에는 PKCS #12와 관련된 필드가 포함되어 있습니다.
-
.p12필드에는 인증서와 키가 포함되어 있습니다. -
.password필드는 아카이브를 보호하는 암호입니다.
모든 키는 크기가 2048비트이며 초기 생성에서 365일 동안 유효합니다. 유효 기간을 변경할 수 있습니다.
10.2.2. Cluster Operator에서 생성한 보안 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator는 OpenShift 클러스터에 시크릿으로 저장된 다음 인증서를 생성합니다. AMQ Streams는 기본적으로 이러한 시크릿을 사용합니다.
클러스터 CA 및 클라이언트 CA에는 개인 키 및 공개 키에 대한 별도의 시크릿이 있습니다.
<cluster_name>-cluster-ca- 클러스터 CA의 개인 키를 포함합니다. AMQ Streams 및 Kafka 구성 요소는 개인 키를 사용하여 서버 인증서에 서명합니다.
<cluster_name>-cluster-ca-cert- 클러스터 CA의 공개 키를 포함합니다. Kafka 클라이언트는 공개 키를 사용하여 TLS 서버 인증으로 연결된 Kafka 브로커의 ID를 확인합니다.
<cluster_name>-clients-ca- 클라이언트 CA의 개인 키를 포함합니다. Kafka 클라이언트는 Kafka 브로커에 연결할 때 개인 키를 사용하여 TLS 클라이언트 인증을 위한 새 사용자 인증서에 서명합니다.
<cluster_name>-clients-ca-cert- 클라이언트 CA의 공개 키를 포함합니다. Kafka 브로커는 TLS 클라이언트 인증이 사용될 때 Kafka 브로커에 액세스하는 클라이언트의 ID를 확인하는 데 공개 키를 사용합니다.
AMQ Streams 구성 요소 간 통신을 위한 시크릿에는 클러스터 CA에서 서명한 개인 키와 공개 키 인증서가 포함되어 있습니다.
<cluster_name>-kafka-brokers- Kafka 브로커의 개인 키 및 공개 키가 포함되어 있습니다.
<cluster_name>-zookeeper-nodes- Zoo Cryostat 노드의 개인 및 공개 키를 포함합니다.
<cluster_name>-cluster-operator-certs- Cluster Operator와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-entity-topic-operator-certs- Topic Operator와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-entity-user-operator-certs- User Operator와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-cruise-control-certs- Cruise Control과 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-kafka-exporter-certs- Kafka Exporter와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
클러스터 CA 또는 클라이언트 CA에서 서명한 인증서 대신 Kafka 리스너 인증서를 사용하여 Kafka 브로커에 연결할 자체 서버 인증서 및 개인 키를 제공할 수 있습니다.
10.2.3. 클러스터 CA 시크릿 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 CA 보안은 Kafka 클러스터의 Cluster Operator에 의해 관리됩니다.
클라이언트에는 <cluster_name> -cluster-ca-cert 시크릿만 필요합니다. 다른 모든 클러스터 시크릿은 AMQ Streams 구성 요소에서 액세스할 수 있습니다. 필요한 경우 OpenShift 역할 기반 액세스 제어를 사용하여 이를 적용할 수 있습니다.
< cluster_name> -cluster-ca-cert 의 CA 인증서는 TLS를 통해 Kafka 브로커에 연결할 때 Kafka 브로커 인증서를 검증하도록 Kafka 클라이언트 애플리케이션에서 신뢰해야 합니다.
| 필드 | 설명 |
|---|---|
|
| 클러스터 CA의 현재 개인 키입니다. |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
| 클러스터 CA의 현재 인증서입니다. |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
|
Kafka 브로커 Pod < num>의 인증서입니다. <cluster |
|
|
Kafka 브로커 Pod < |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
|
Zoo Cryostat 노드 < num& gt;의 인증서입니다. <cluster |
|
|
Zoo Cryostat pod < |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
|
Cluster Operator와 Kafka 또는 Zoo Cryostat 간의 TLS 통신 인증서입니다. <cluster |
|
| Cluster Operator와 Kafka 또는 Zoo Cryostat 간의 TLS 통신용 개인 키입니다. |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
|
Topic Operator와 Kafka 또는 Zoo Cryostat 간의 TLS 통신 인증서입니다. <cluster |
|
| Topic Operator와 Kafka 또는 Zoo Cryostat 간의 TLS 통신용 개인 키입니다. |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
|
User Operator와 Kafka 또는 Zoo Cryostat 간의 TLS 통신 인증서입니다. <cluster |
|
| User Operator와 Kafka 또는 Zoo Cryostat 간의 TLS 통신용 개인 키입니다. |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
|
Cruise Control과 Kafka 또는 Zoo Cryostat 간의 TLS 통신 인증서입니다. <cluster |
|
| Cruise Control과 Kafka 또는 Zoo Cryostat 간의 TLS 통신의 개인 키입니다. |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
|
Kafka Exporter와 Kafka 또는 Zoo Cryostat 간의 TLS 통신 인증서입니다. <cluster |
|
| Kafka Exporter와 Kafka 또는 Zoo Cryostat 간의 TLS 통신용 개인 키입니다. |
10.2.4. 클라이언트 CA 시크릿 링크 복사링크가 클립보드에 복사되었습니다!
클라이언트 CA 보안은 Kafka 클러스터의 Cluster Operator에 의해 관리됩니다.
< cluster_name> -clients-ca-cert 의 인증서는 Kafka 브로커가 신뢰하는 인증서입니다.
& lt;cluster_name> -clients-ca 시크릿은 클라이언트 애플리케이션의 인증서에 서명하는 데 사용됩니다. User Operator를 사용하지 않고 애플리케이션 인증서를 발급하려는 경우 AMQ Streams 구성 요소와 관리 액세스 권한을 위해 이 시크릿에 액세스할 수 있어야 합니다. 필요한 경우 OpenShift 역할 기반 액세스 제어를 사용하여 이를 적용할 수 있습니다.
| 필드 | 설명 |
|---|---|
|
| 클라이언트 CA의 현재 개인 키입니다. |
| 필드 | 설명 |
|---|---|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. |
|
| 클라이언트 CA의 현재 인증서입니다. |
10.2.5. 사용자 보안 링크 복사링크가 클립보드에 복사되었습니다!
사용자 보안은 User Operator가 관리합니다.
User Operator를 사용하여 사용자를 생성하면 사용자 이름을 사용하여 보안이 생성됩니다.
| 시크릿 이름 | 시크릿 내 필드 | 설명 |
|---|---|---|
|
|
| 인증서 및 키를 저장하기 위한 PKCS #12 아카이브 파일. |
|
| PKCS #12 아카이브 파일을 보호하기 위한 암호입니다. | |
|
| 클라이언트 CA에서 서명한 사용자의 인증서 | |
|
| 사용자의 개인 키 |
10.2.6. 클러스터 CA 보안에 레이블 및 주석 추가 링크 복사링크가 클립보드에 복사되었습니다!
Kafka 사용자 정의 리소스에서 clusterCaCert 템플릿 속성을 구성하면 Cluster Operator에서 생성한 Cluster CA 보안에 사용자 정의 레이블 및 주석을 추가할 수 있습니다. 레이블 및 주석은 오브젝트를 식별하고 컨텍스트 정보를 추가하는 데 유용합니다. AMQ Streams 사용자 정의 리소스에서 템플릿 속성을 구성합니다.
보안에 레이블 및 주석을 추가하는 템플릿 사용자 정의 예
템플릿 속성 구성에 대한 자세한 내용은 2.8절. “OpenShift 리소스 사용자 정의” 을 참조하십시오.
10.2.7. CA 보안에서 ownerReference 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Cluster 및 Client CA 보안은 Kafka 사용자 정의 리소스로 설정된 ownerReference 속성을 사용하여 생성됩니다. 즉, Kafka 사용자 정의 리소스가 삭제되면 OpenShift에서 CA 시크릿도 삭제(가용됨)됩니다.
새 클러스터에 CA를 재사용하려면 Kafka 구성에서 Cluster 및 Client CA 시크릿의 generateSecretOwnerReference 속성을 false 로 설정하여 ownerReference 를 비활성화할 수 있습니다. ownerReference 가 비활성화되면 해당 Kafka 사용자 정의 리소스가 삭제되면 OpenShift에서 CA 시크릿이 삭제되지 않습니다.
클러스터 및 클라이언트 CA에 대해 비활성화된 ownerReference 를 사용한 Kafka 구성의 예