개요
Secret Manager는 API 키, 비밀번호, 인증서와 같은 민감한 정보를 보호할 수 있습니다. 이를 사용하여 Google Cloud에서 보안 비밀을 관리하고 액세스하고 감사할 수 있습니다.
Secret Manager 사용자 인증 정보 제공자를 사용하여 Secret Manager 보안 비밀을 사용하도록 Dataproc 클러스터 또는 작업을 구성할 수 있습니다.
가용성
이 기능은 이미지 버전 2.0.97 이상, 2.1.41 이상, 2.2.6 이상 또는 이후 주요 Dataproc 이미지 버전으로 만든 Dataproc 클러스터에서 사용할 수 있습니다.
용어
다음 표에서는 이 문서에 사용된 용어에 대해 설명합니다.
용어 | 설명 |
---|---|
Secret |
Secret Manager 보안 비밀은 메타데이터 및 보안 비밀 버전 모음이 포함된 전역 프로젝트 객체입니다. 보안 비밀을 바이너리 blob 또는 텍스트 문자열로 저장, 관리, 액세스할 수 있습니다. |
Credential |
Hadoop 및 기타 Dataproc 호스팅 애플리케이션에서 사용자 인증 정보는 사용자 인증 정보 이름 (ID)과 사용자 인증 정보 값 (비밀번호)으로 구성됩니다. 사용자 인증 정보 ID와 값은 Secret Manager 보안 비밀 ID 및 보안 비밀 값 (보안 비밀 버전)에 매핑됩니다. |
사용
Dataproc 클러스터를 만들거나 작업을 제출할 때 다음 속성을 설정하여 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) 구성요소는 사용자 인증 정보 키에 점(.)을 사용합니다. 이 제한사항을 해결하려면 이 속성을 사용 설정하여 사용자 인증 정보 이름에서 점 (.
)을 하이픈 (-
)으로 바꿉니다. 이렇게 하면 이름에 점(.)이 있는 OSS 사용자 인증 정보를 Secret Manager에서 올바르게 저장하고 검색할 수 있습니다.예를 들어 OSS 사용자 인증 정보 키가
a.b.c
인 경우 Secret Manager에 저장할 때 이를a-b-c
로 수정해야 합니다.--properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
이 속성은 선택사항입니다. 기본값은
false
입니다. 사용자 인증 정보 이름에 점 (.
) 연산자가 없는 사용자 인증 정보 키의 경우 이 속성을 무시해도 됩니다.보안 비밀 버전 : Secret Manager의 보안 비밀에는 여러 버전 (값)이 있을 수 있습니다. 이 속성을 사용하여 프로덕션 환경에서 안정적으로 액세스할 수 있도록 특정 보안 비밀 버전에 액세스합니다.
--properties=hadoop.security.credstore.google-secret-manager.secret-version=1
이 속성은 선택사항입니다. 기본적으로 Secret Manager는 런타임 시 보안 비밀의 최신 값으로 확인되는
LATEST
버전에 액세스합니다. 보안 비밀의LATEST
버전에 항상 액세스하는 것이 사용 사례인 경우 이 속성은 무시해도 됩니다.
Secret Manager 사용자 인증 정보 제공자로 Dataproc 클러스터 만들기
- 로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 필요한 속성으로 Dataproc 클러스터를 만듭니다.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --properties="hadoop:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
참고:
- CLUSTER_NAME: 새 클러스터의 이름
- REGION: 워크로드가 실행되는 Compute Engine 리전입니다.
- PROJECT_ID: 프로젝트 ID는 Google Cloud 콘솔 대시보드의 프로젝트 정보 섹션에 표시됩니다.
Secret Manager 사용자 인증 정보 제공업체를 사용하여 Dataproc 제출
로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 필요한 속성으로 Dataproc 작업을 제출합니다.
gcloud dataproc jobs submit CLUSTER_NAME \ --region=REGION \ --properties="hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed... \ -- job-args
참고:
- CLUSTER_NAME: 작업을 실행할 클러스터의 이름입니다.
- REGION: 워크로드가 실행되는 Compute Engine 리전입니다.
- PROJECT_ID: 프로젝트 ID는 Google Cloud 콘솔 대시보드의 프로젝트 정보 섹션에 표시됩니다.
Hive Metastore에서 Secret Manager 사용
Hive 메타스토어 속성 javax.jdo.option.ConnectionPassword
에는 메타스토어 데이터베이스에 대한 액세스를 인증하는 데 사용되는 비밀번호가 포함됩니다. 비밀번호는 hive-site.xml
에 텍스트 형식으로 저장되며 이는 보안 위험을 나타냅니다. 프로덕션의 권장사항은 Secret Manager에 비밀번호를 저장한 후 Hive Metastore 서비스가 Secret Manager에서 비밀번호를 읽을 수 있도록 hive-site.xml
구성 파일을 업데이트하는 것입니다.
다음 예에서는 다양한 Hive Metastore 시나리오에서 Secret Manager를 사용하는 방법을 보여줍니다.
로컬 메타스토어가 있는 클러스터 만들기
- 로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 Dataproc 클러스터를 만듭니다.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ ...other flags as needed... \
참고:
- CLUSTER_NAME: 새 클러스터의 이름
- REGION: 워크로드가 실행되는 Compute Engine 리전입니다.
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 Metastore를 사용하여 클러스터 만들기
로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 다음 클러스터 속성으로 Dataproc 클러스터를 만듭니다. 이 클러스터를 Spark Hive 워크로드의 다른 Dataproc 클러스터에서 실행되는 Hive 작업의 외부 Hive 메타스토어로 사용합니다.
gcloud dataproc clusters create METASTORE_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
외부 메타스토어에 연결하는 Hive 작업을 실행할 클러스터 만들기
- 로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 다음 클러스터 속성으로 Dataproc 클러스터를 만듭니다.
이 클러스터를 사용하여 다른 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...
Hadoop 사용자 인증 정보 명령어
SSH를 사용하여 Dataproc 마스터 노드에 연결한 후 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 명령어 가이드를 참조하세요.
추가 정보
- Hive 문서 살펴보기