개요
Secret Manager는 API 키, 비밀번호, 인증서와 같은 민감한 정보를 보호할 수 있습니다. 이를 사용하여 Google Cloud에서 보안 비밀을 관리하고 액세스하고 감사할 수 있습니다.
Secret Manager와 통합되는 GoogleHadoopSecretManagerCredentialProvider
API는 공개 액세스로부터 민감한 사용자 인증 정보를 보호하는 솔루션인 Hadoop CredentialProvider API를 구현한 것입니다.
Hadoop CredentialProvider API는 다음과 같은 방법으로 사용할 수 있습니다.
- Hadoop 사용자 인증 정보 명령어를 사용합니다.
- Secret Manager에서 작동하도록 Hive와 같은 OSS 구성요소를 구성합니다.
용어
다음 표에서는 이 문서에 사용된 용어에 대해 설명합니다.
용어 | 설명 |
---|---|
Secret |
보안 비밀은 메타데이터와 보안 비밀 버전의 모음이 포함된 프로젝트-전역 객체입니다. Secret Manager를 사용하면 보안 비밀을 바이너리 blob 또는 텍스트 문자열로 저장하고 관리하고 액세스할 수 있습니다. |
Credential |
Hadoop 및 기타 Dataproc 호스팅 애플리케이션에서 사용자 인증 정보는 사용자 인증 정보 이름(ID)과 사용자 인증 정보 값(비밀번호)으로 구성됩니다. 사용자 인증 정보 ID와 값은 Secret Manager의 보안 비밀 ID 및 보안 비밀 값(보안 비밀 버전)에 매핑됩니다. |
Hadoop 사용자 인증 정보 명령어
hadoop credential
명령어를 사용하여 보안 비밀을 만들고 나열하고 관리할 수 있습니다.
hadoop credential
명령어는 일반적인 형식(hadoop credential SUBCOMMAND OPTIONS
)을 사용합니다.
다음 예시에서는 제공 프로그램 유형과 위치(제공 프로그램 저장소)를 지정하기 위해 -provider
플래그가 추가되었습니다. gsm://
스키마는 Secret Manager를 지정합니다.
지정된 보안 비밀 ID로 보안 비밀을 만듭니다. 지정된 보안 비밀 ID가 있으면 이 명령어를 사용해도 보안 비밀이 만들어지지 않습니다. 이 동작은 Hadoop
CredentialProvider
API와 일치합니다.hadoop credential create secret-id -provider gsm://projects/PROJECT_ID -v VALUE
프로젝트에 저장된 보안 비밀을 나열합니다.
hadoop credential list -provider gsm://projects/PROJECT_ID
지정된 값의 프로젝트에 보안 비밀이 있는지 확인합니다.
hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
구성 파일에서 특정 보안 비밀 버전을 확인합니다.
hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/project-id -v VALUE
CONFIG_FILE:
hadoop.security.credstore.google-secret-manager.secret-version
을 설정하는 XML 파일입니다.프로젝트에서 모든 보안 비밀 버전을 삭제합니다.
hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
자세한 내용은 Hadoop 명령어 가이드를 참조하세요.
OSS 구성요소 구성
다음 구성요소 속성을 설정하여 Secret Manager에서 작동하도록 Hadoop 및 기타 지원되는 다른 OSS 구성요소를 구성할 수 있습니다.
제공 프로그램 경로(필수): 제공 프로그램 경로 속성
hadoop.security.credential.provider.path
는 사용자 인증 정보를 확인하기 위해 전달되는 하나 이상의 사용자 인증 정보 제공 프로그램 URI의 쉼표로 구분된 목록입니다.--properties=hadoop.security.credential.provider.path=gsm://projects/project-id
scheme
는 사용자 인증 정보 제공 프로그램 유형을 나타내는 데 사용됩니다. Hadoop 스키마에는jceks://
,user://
,localjceks://
가 포함됩니다. 이전 예시에 표시된 것처럼gsm://
스키마를 사용하여 Secret Manager에서 사용자 인증 정보를 검색합니다.
대체 점 연산자(선택사항): Secret Manager는 보안 비밀 이름에 점(
.
) 연산자를 지원하지 않지만 OSS 구성요소 사용자 인증 정보 키에는 이 연산자가 포함될 수 있습니다. 이 속성이true
로 설정되면 사용자 인증 정보 이름의 점(.
)을 하이픈(-
)으로 바꿀 수 있습니다. 예를 들어 이 속성이true
로 설정된 경우 Secret Manager에 전달할 때 사용자 인증 정보 이름a.b.c
를a-b-c
로 지정할 수 있습니다. 이 속성은 Hadoop 사용자 인증 정보 명령어를 사용하여 사용자 인증 정보를 지정하거나 OSS 구성요소가 사용자 인증 정보를 확인하려고 시도하는 경우에만 필요합니다. 만들기, 나열, 삭제 Hadoop 사용자 인증 정보 명령어에는 영향을 미치지 않습니다.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
보안 비밀 버전(선택사항): Secret Manager의 보안 비밀에는 여러 버전(값)이 있을 수 있습니다. 이 속성을 사용하여 보안 비밀 버전에 액세스합니다. 기본적으로 Secret Manager는 런타임 시 보안 비밀의 최신 값으로 확인되는
LATEST
버전에 액세스합니다. 가장 좋은 방법은 프로덕션 환경에서 안정적으로 액세스할 수 있도록 이 속성을 정의하는 것입니다.--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
Hive Metastore 예시
Hive 메타스토어 속성 javax.jdo.option.ConnectionPassword
에는 메타스토어 데이터베이스에 대한 액세스를 인증하는 데 사용되는 비밀번호가 포함됩니다. 이 비밀번호는 보안 위험을 나타내는 hive-site.xml
에 일반 텍스트 형식으로 저장됩니다. 가장 좋은 방법은 Secret Manager에 비밀번호를 저장한 후, Hive Metastore 서비스가 Secret Manager에서 비밀번호를 읽을 수 있도록 hive-site.xml
구성 파일을 업데이트하는 것입니다.
다음 섹션에서는 다양한 Hive Metastore 시나리오에서 Secret Manager를 사용하는 방법에 대한 안내를 제공합니다.
로컬 메타스토어가 있는 Hive 클러스터
로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 필요한 클러스터 속성으로 Dataproc 클러스터를 만듭니다.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
보안 비밀을 만듭니다. Secret Manager 또는
hadoop credential
명령어를 사용하여 보안 비밀을 만들 수 있습니다.대안 1: Secret Manager를 사용하여 보안 비밀을 만듭니다.
- 보안 비밀 이름:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- 보안 비밀 값:
METASTORE_PASSWORD
.
- 보안 비밀 이름:
대안 2:
hadoop credential
명령어를 사용하여 보안 비밀을 만듭니다.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Secret Manager는 점(
.
) 연산자를 지원하지 않으므로 비밀번호의 모든 점(.
)을 하이픈(-
)으로 바꿉니다.
- METASTORE_PASSWORD: Secret Manager는 점(
보안 비밀이 있는지 확인합니다.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
텍스트 편집기를 사용하여
hive-site.xml
파일에서javax.jdo.option.ConnectionPassword
속성을 삭제한 후hadoop.security.credential.provider.path
및hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator
속성을 파일에 추가합니다.속성 예시는 다음과 같습니다.
hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
Hive Metastore를 다시 시작합니다.
sudo systemctl restart hive-metastore
외부 메타스토어가 있는 Hive 클러스터
로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 다음 클러스터 속성으로 Dataproc 클러스터를 만듭니다.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore" \ ...other flags as needed...
보안 비밀을 만듭니다. Secret Manager 또는
hadoop credential
명령어를 사용하여 보안 비밀을 만들 수 있습니다.- 대안 1: Secret Manager를 사용하여 보안 비밀을 만듭니다.
- 보안 비밀 이름:
/projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
- 보안 비밀 값:
METASTORE_PASSWORD
.
- 보안 비밀 이름:
- 대안 2:
hadoop credential
명령어를 사용하여 보안 비밀을 만듭니다.sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
- METASTORE_PASSWORD: Secret Manager는 점(
.
) 연산자를 지원하지 않으므로 비밀번호의 점(.
)을 하이픈(-
)으로 바꿉니다.
- METASTORE_PASSWORD: Secret Manager는 점(
- 대안 1: Secret Manager를 사용하여 보안 비밀을 만듭니다.
보안 비밀이 있는지 확인합니다.
sudo hadoop credential list -provider gsm://projects/PROJECT_ID
로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 다음 클러스터 속성으로 Dataproc 클러스터를 만듭니다. 이 클러스터를 사용하여 Hive 작업을 실행하고 외부 메타스토어에 연결합니다.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hive:javax.jdo.option.ConnectionURL=jdbc:mysql://metastore-cluster-name-m/metastore,hive:hadoop.security.credential.provider.path=gsm://projects/project-id,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
추가 정보
- Hive 문서 살펴보기