이 문서에서는 기존 Active Directory 기반 사용자가 AlloyDB Omni 데이터베이스에 액세스할 수 있도록 Kubernetes 기반 AlloyDB Omni 데이터베이스 클러스터에서 Active Directory 통합을 사용 설정하는 방법을 설명합니다. Active Directory 통합은 Kerberos 메커니즘을 사용하여 인증된 사용자가 AlloyDB Omni에 액세스할 수 있도록 GSSAPI를 사용한 승인을 제공합니다.
자세한 내용은 Active Directory 개요를 참고하세요.
이 문서에서는 사용자가 Kubernetes 매니페스트 파일 적용 및 kubectl 명령줄 도구 사용에 익숙하다고 가정합니다. 자세한 내용은 명령줄 도구 (kubectl)를 참고하세요.
시작하기 전에
Active Directory 통합을 사용 설정하려면 다음이 필요합니다.
- Kubernetes 환경에 배포된 AlloyDB Omni 클러스터
- Active Directory 서버 키탭
AlloyDB Omni Kubernetes 연산자 1.4.0에서 1.5.0으로 마이그레이션
AlloyDB Omni 연산자 버전 1.4.0 이하에서 Active Directory 통합을 사용하는 경우 AlloyDB Omni 연산자 버전 1.5.0으로 이전해야 합니다.
AlloyDB Omni 연산자 버전 1.5.0으로 마이그레이션하려면 다음 단계를 따르세요.
- AlloyDB Omni 연산자를 버전 1.5.0으로 업그레이드합니다.
- 사용자 정의 인증 리소스를 만듭니다.
- 새 UserDefinedAuthentication 리소스 매니페스트를 만듭니다.
spec.dbclusterRef
에 대상 DBCluster 이름을 입력합니다.spec.keytabSecretRef
을 keytab 보안 비밀의 이름으로 채웁니다.- Active Directory 및 Kerberos 인증과 관련된 기존
pg_hba.conf
규칙을spec.pgHbaEntries
필드에 복사합니다. - 기존
pg_ident.conf rules
(있는 경우)를spec.pgIdentEntries
필드에 복사합니다. - 이 새 매니페스트(예:
kubectl apply -f user-auth-crd.yaml
)를 적용합니다.
- 미리보기 구성을 삭제하고 클러스터를 재배포합니다.
- DBCluster 리소스 정의에서 이전에 Active Directory 통합을 구성하는 데 사용한 모든 주석(예: 호스트 기반 인증(HBA) 규칙, ident 규칙, keytab 파일 주석)을 삭제합니다.
- 생성한
pg_hba
및pg_ident
구성 맵을 삭제합니다. - 업데이트된 DBCluster 매니페스트를 다시 적용합니다.
Active Directory 지원 구성
keytab으로 보안 비밀을 만들고 적용합니다.
apiVersion: v1 kind: Secret metadata: name: KEYTAB_SECRET_NAME namespace: DB_CLUSTER_NAMESPACE type: Opaque data: krb5.keytab: | KEYTAB_FILE_CONTENT
다음은 Active Directory 서버에서 keytab을 생성하는 명령어의 예시입니다.
ktpass /princ postgres/DBCLUSTER_HOST@REALM /Pass PASSWORD /mapuser postgres /crypto ALL /ptype KRB5_NT_Principal /out OUTPUT_PATH
ALLOYDB_HOST
는 DBCluster 또는 DBCluster IP 주소를 가리키는 호스트입니다.다음 사용자 정의 인증 커스텀 리소스 매니페스트를 적용합니다.
apiVersion: alloydbomni.dbadmin.goog/v1 kind: UserDefinedAuthentication metadata: name: USER_DEFINED_AUTHENTICATION_NAME namespace: DB_CLUSTER_NAMESPACE spec: dbclusterRef: name: DB_CLUSTER_NAME keytabSecretRef: name: KEYTAB_SECRET_NAME pgHbaEntries: PG_HBA_ENTRIES pgIdentEntries: PG_IDENT_ENTRIES
다음을 바꿉니다.
USER_DEFINED_AUTHENTICATION_NAME
: UserDefinedConfiguration의 이름입니다(예:DB_CLUSTER_NAME-ad-auth
).DB_CLUSTER_NAMESPACE
: 이 백업 계획의 Kubernetes 네임스페이스입니다. 네임스페이스는 데이터베이스 클러스터의 네임스페이스와 일치해야 합니다.DB_CLUSTER_NAME
: 생성할 때 할당한 데이터베이스 클러스터의 이름입니다.KEYTAB_SECRET_NAME
: 생성한 키탭의 이름입니다.PG_HBA_ENTRIES
: 문자열 목록으로 된pg_hba.conf
항목입니다. 이러한 항목은pg_hba.conf
의 기본 항목을 덮어씁니다. 잘못된 구성을 추가하면 사용자가 로그인할 수 없습니다.앞의 예에서는 GSS 기반 인증 항목을 추가한 후 비밀번호 기반 인증을 추가했습니다. 이는 사용자가 GSS API를 사용하여 로그인했음을 의미합니다. 이 로그인 방식이 실패하면 비밀번호 기반 인증이 대체로 사용됩니다.
자세한 내용은 pg_hba.conf 파일을 참고하세요.
PG_IDENT_ENTRIES
: 문자열 목록으로 된pg_ident.conf
항목입니다. 사용자 이름 매핑을 구현하려면pg_hba.conf
파일의 옵션 필드에map=
를 지정하세요. 자세한 내용은 ID 맵을 참고하세요.아래 예시를 참조하세요.
apiVersion: v1 kind: Secret metadata: name: db-keytab-dbcluster-sample type: Opaque data: krb5.keytab: | DUMMY_KEYTAB --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: UserDefinedAuthentication metadata: name: dbcluster-sample-ad-auth spec: dbclusterRef: name: dbcluster-sample keytabSecretRef: name: db-keytab-dbcluster-sample pgHbaEntries: - hostgssenc all all 0.0.0.0/0 gss - hostgssenc all all ::1/128 gss - hostssl all all 0.0.0.0/0 scram-sha-256 - hostssl all all ::/0 scram-sha-256 pgIdentEntries: - usermap active_directory_user postgres_user
Active Directory 사용자로 데이터베이스 역할 만들기
Active Directory 사용자와 일치하는 역할을 데이터베이스에 만듭니다. Active Directory 사용자의 역할을 만들려면 클러스터에 연결하고 다음 명령어를 실행하세요.
username=# CREATE ROLE "USERNAME@REALM" WITH LOGIN;
Active Directory 사용자를 사용하여 데이터베이스에 로그인합니다. 연결하려는 클라이언트에서
kinit
를 사용 설정해야 합니다. 이 예시에서postgres-client
포드에는 kinit 및 psql이 설치되어 있으며 psql 클라이언트를 사용하여 AlloyDB Omni 클러스터에 연결하도록 구성되어 있습니다.kubectl exec -it postgres-client -n DB_CLUSTER_NAMESPACE -- bash root:/# kinit USERNAME Password for USERNAME@REALM: root:/# psql -h HOSTNAME -d DB_NAME -U USERNAME@REALM psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help.
SQL 쿼리를 실행합니다.
username=# select * from TABLE_NAME;
Active Directory 인증 사용 중지
Active Directory 인증을 사용 중지하려면 다음 Helm 명령어를 실행합니다.
helm upgrade alloydbomni-operator PATH_TO_CHART -n alloydb-omni-system --set userDefinedAuthentication.enabled=false
이 명령어는 다음 출력을 반환합니다.
Release "alloydbomni-operator" has been upgraded. Happy Helming! NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 2 TEST SUITE: None
다음 단계
- Active Directory 사용자 지원을 AlloyDB Omni와 통합
- Active Directory 그룹 지원을 AlloyDB Omni와 통합
- Kubernetes에서 Active Directory 그룹 지원 통합
- AlloyDB Omni의 Active Directory 통합 문제 해결