AlloyDB Omni의 Active Directory 구성은 선택사항이며 기본적으로 사용 중지되어 있습니다. 인증에 Active Directory 서버를 사용하는 환경만 이 구성 메커니즘을 사용할 수 있습니다.
시작하기 전에
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();