AlloyDB Omni의 Active Directory 구성은 선택사항이며 기본적으로 사용 중지되어 있습니다. 인증에 Active Directory 서버를 사용하는 환경만 이 구성 메커니즘을 사용할 수 있습니다.
시작하기 전에
Active Directory를 통합하기 전에 다음 요구사항을 충족하는지 확인하세요.
- Active Directory가 설정되어 있는지 확인합니다.
- Active Directory 서버의
REALM
을 가져옵니다. - Active Directory 서버의 키 배포 센터(KDC) 호스트 이름을 가져옵니다. 호스트 이름은 Docker 이미지에 저장됩니다.
- Active Directory 서버의 관리 서버 호스트 이름을 가져옵니다. 이 호스트 이름은 Docker 이미지에 저장됩니다.
.keytab
파일을 생성할 수 있도록 Active Directory 서버에 액세스할 수 있는지 확인합니다.- 테스트 및 로그인에 사용할 Active Directory 사용자를 선택합니다.
- 기존 Active Directory 서버에서
.keytab
파일을 가져옵니다.
기존 Active Directory 서버에서 .keytab 파일 가져오기
Active Directory 서버에서 keytab을 가져오려면 다음 단계를 따르세요.
- Active Directory 서버의 PowerShell 터미널에 관리자로 로그인합니다.
- 다음 명령어를 실행하거나 Active Directory 사용자 인터페이스를 사용하여
postgres
라는 사용자를 만듭니다. - 이 Active Directory 서버에 매핑되는 서비스 주 구성원 keytab을 생성합니다.
- keytab 파일을 Linux 머신에 복사합니다.
New-ADUser -Name "postgres" ` -SamAccountName "postgres" ` -UserPrincipalName "postgres@REALM" ` -Description "Service Account for AlloyDB Omni PostgreSQL Kerberos Authentication" ` -AccountPassword (Read-Host -AsSecureString "Set a strong password for the postgres service account") ` -Enabled $true ` -PasswordNeverExpires $true
ktpass /princ postgres/ALLOYDB_HOST_NAME@REALM /Pass ChangeMe123 /mapuser postgres /crypto ALL /ptype KRB5_NT_PRINCIPAL /mapOp set /out C:\Users\Public\postgres.keytab
여기서 <HOST>
는 AlloyDB Omni를 배포할 서버의 정규화된 도메인 이름입니다(예: alloydb-server.ad.example.com
). 도메인 영역 매핑의 krb5.conf
파일에서 동일한 호스트를 구성해야 합니다.
Active Directory 인증 사용 설정
AlloyDB Omni에서 Active Directory 인증을 사용 설정하려면 프로그램이 보안 서비스에 액세스할 수 있도록 지원하는 애플리케이션 프로그래밍 인터페이스인 일반 보안 서비스 애플리케이션 프로그램 인터페이스(GSSAPI)를 구성하는 단계를 따르세요.
/var/lib/postgresql/data/pg_hba.conf
파일의host all all all scram-sha-256
항목 앞에 다음 항목을 추가합니다.다음 Docker 명령어를 실행하여 컨테이너 내에
gss
를 추가합니다.docker exec CONTAINER_NAME sed -i 's;^host all all all scram-sha-256$;hostgssenc all all 0.0.0.0/0 gss map=gssmap\n&;' /var/lib/postgresql/data/pg_hba.conf
다음 Docker 명령어를 실행하여
pg_hba.conf
파일이 컨테이너 내에 있는지 확인합니다.docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
파일에 다음 항목이 있는지 확인합니다.
hostgssenc all all 0.0.0.0/0 gss map=gssmap
자세한 내용은 pg_hba.conf 파일을 참조하세요.
keytab 파일을 AlloyDB Omni 이미지 내부의 데이터 디렉터리에 복사합니다.
docker cp PATH TO KEYTAB FILE CONTAINER_NAME:/var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chmod 600 /var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chown postgres:postgres /var/lib/postgresql/data/alloydb.keytab
keytab 파일은 PostgreSQL 서버용 Kerberos에 의해 생성됩니다. 인증에 대해 자세히 알아보려면 GSSAPI 인증을 참조하세요.
keytab 파일 항목을
/var/lib/postgresql/data/DATA_DIR/postgresql.conf
파일에 추가합니다.다음 Docker 명령어를 실행하여 컨테이너 내에 항목을 추가합니다.
docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
다음 Docker 명령어를 실행하여 컨테이너 내의
postgresql.conf
파일을 확인합니다.docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
파일에 다음 항목이 있는지 확인합니다.
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
자세한 내용은 krb_server_keyfile을 참조하세요.
선택사항:
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
파일에 항목을 추가합니다.GSSAPI와 같은 외부 인증 시스템을 사용하는 경우 연결을 시작한 운영체제 사용자의 이름이 사용하려는 데이터베이스 사용자(역할)와 다를 수 있습니다.
이 경우
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
파일에 시스템 user-to-PostgreSQL 사용자 매핑을 지정합니다.docker exec -it CONTAINER_NAME bash $ echo -e " gssmap /^(.*)@EXAMPLE\.COM$ \1 gssmap /^(.*)@example\.com$ \1 " | column -t | tee -a /var/lib/postgresql/data/pg_ident.conf
사용자 이름 매핑을 구현하려면
pg_hba.conf
파일의 옵션 필드에map=gssmap
를 지정합니다.ident 기반 인증에 대한 자세한 내용은 Ident 맵을 참조하세요.
다음 명령어를 사용하여 PostgreSQL 구성을 다시 로드합니다.
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Active Directory 인증 테스트
Active Directory 인증이 작동하는지 확인하려면 다음 단계를 따르세요.
kinit
를 사용하여 Active Directory에 로그인합니다.일반적으로
kinit
를 실행하는 머신에서 다음psql
명령어를 실행합니다.root@4f6414ad02ef:/# kinit AD_USER_NAME Password for user1@YOUR.REALM: root@4f6414ad02ef:/# psql --h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. user1=#
Active Directory 인증 사용 중지
AlloyDB Omni에서 Active Directory 인증을 사용 중지하려면 GSSAPI를 사용 중지하는 다음 단계를 따르세요.
gss
인증 방법을 가리키는pg_hba.conf
파일의 항목을 삭제합니다.docker exec CONTAINER_NAME sed -i '/hostgssenc all all 0.0.0.0\/0 gss map=gssmap/d' /var/lib/postgresql/data/pg_hba.conf
다음 명령어를 사용하여 PostgreSQL 구성을 다시 로드합니다.
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
다음 단계
- Kubernetes에서 Active Directory 사용자 지원 통합
- AlloyDB Omni에서 Active Directory 문제 해결
- Active Directory 그룹 지원을 AlloyDB Omni와 통합
- Kubernetes에서 Active Directory 그룹 지원 통합
- AlloyDB Omni의 Active Directory 통합 문제 해결