Secret Manager로 보안 비밀 구성

Secret Manager의 Python 클라이언트를 Vertex AI Pipelines와 함께 사용하여 Secret Manager에 저장된 보안 비밀에 액세스할 수 있습니다.

Google Cloud 콘솔을 사용하여 보안 비밀 만들기

  1. Google Cloud 콘솔에서 Secret Manager API를 사용 설정합니다.

  2. Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    보안 비밀 관리자 페이지로 이동

  3. Secret Manager 페이지에서 보안 비밀 만들기를 클릭합니다.

  4. 보안 비밀 만들기 페이지에서 이름 아래에 보안 비밀 이름을 입력합니다(예: `universe-secret).

  5. 초기 보안 비밀을 만들 때 보안 비밀 버전을 추가하려면 보안 비밀 값 필드에 보안 비밀의 값을 입력합니다(예: 42).

  6. 리전을 선택합니다.

  7. 보안 비밀 만들기 버튼을 클릭합니다.

Python 함수 기반 구성요소로 파이프라인 빌드 및 실행

다음은 이전에 생성된 보안 비밀을 출력하는 샘플 구성요소입니다.

  1. 파이프라인을 실행하는 서비스 계정에 Secrete Manager 권한을 부여합니다. 자세한 내용은 Vertex AI Pipelines를 위해 Google Cloud 프로젝트 구성의 '세분화된 권한으로 서비스 계정 구성' 섹션을 참조하세요.

  2. Kubeflow Pipelines SDK를 사용하여 하나의 태스크가 포함된 간단한 파이프라인을 빌드합니다.

     from kfp import compiler
     from kfp import dsl
    
     # A simple component that prints a secret stored in Secret Manager
     # Be sure to specify "google-cloud-secret-manager" as one of packages_to_install
     @dsl.component(
         packages_to_install=['google-cloud-secret-manager']
     )
     def print_secret_op(project_id: str, secret_id: str, version_id: str) -> str:
         from google.cloud import secretmanager
    
         secret_client = secretmanager.SecretManagerServiceClient()
         secret_name = f'projects/{project_id}/secrets/{secret_id}/versions/{version_id}'
         response = secret_client.access_secret_version(request={"name": secret_name})
         payload = response.payload.data.decode("UTF-8")
         answer = "The secret is: {}".format(payload)
         print(answer)
         return answer
    
     # A simple pipeline that contains a single print_secret task
     @dsl.pipeline(
         name='secret-manager-demo-pipeline')
     def secret_manager_demo_pipeline(project_id: str, secret_id: str, version_id: str):
         print_secret_task = print_secret_op(project_id, secret_id, version_id)
    
     # Compile the pipeline
     compiler.Compiler().compile(pipeline_func=secret_manager_demo_pipeline,
                                 package_path='secret_manager_demo_pipeline.yaml')
    
  3. Vertex AI SDK를 사용하여 파이프라인을 실행합니다.

     from google.cloud import aiplatform
    
     parameter_values = {
         "project_id": PROJECT_ID,
         "secret_id": SECRET_ID,
         "version_id": VERSION_ID
     }
    
     aiplatform.init(
         project=PROJECT_ID,
         location=REGION,
     )
    
     job = aiplatform.PipelineJob(
         display_name=f'test-secret-manager-pipeline',
         template_path='secret_manager_demo_pipeline.yaml',
         pipeline_root=PIPELINE_ROOT,
         enable_caching=False,
         parameter_values=parameter_values
     )
    
     job.submit(
         service_account=SERVICE_ACCOUNT
     )
    

    다음을 바꿉니다.

    • PROJECT_ID: 이 파이프라인이 실행되는 Google Cloud 프로젝트입니다.
    • SECRET_ID: 이전 단계에서 만든 보안 비밀 ID입니다(예: universe-secret).
    • VERSION_ID: 보안 비밀의 버전 이름입니다.
    • REGION: 이 파이프라인이 실행되는 리전입니다.
    • PIPELINE_ROOT: 파이프라인 서비스 계정이 액세스할 수 있는 Cloud Storage URI를 지정합니다. 파이프라인 실행의 아티팩트는 파이프라인 루트 내에 저장됩니다.
    • SERVICE_ACCOUNT: Secret Manager 접근자 권한으로 만든 서비스 계정의 이메일 주소입니다.

job.submit() 함수 출력에서 파이프라인 실행을 Google Cloud 콘솔에서 볼 수 있게 해주는 링크를 클릭할 수 있습니다.