Openflow와 함께 외부 시크릿 제공자 사용하기

Openflow와 함께 외부 시크릿 제공자 사용하기

Openflow가 AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager의 문자열 비밀을 gen 2 및 gen 1 커넥터가 사용할 수 있는 매개변수로 노출하는 방법을 설명합니다.

출처: Snowflake 문서

본문

외부 시크릿 제공자 사용 준비

Openflow는 AWS Secrets Manager, Azure Key Vault, 또는 Google Cloud Secret Manager의 문자열 비밀을 gen 2 및 gen 1 커넥터가 소비할 수 있는 매개변수로 노출할 수 있습니다.

Openflow를 구성하기 전에 Snowflake에서 외부 시크릿 제공자를 설정하고 확인하세요:

  • AWS Secrets Manager
  • Azure Key Vault
  • Google Cloud Secret Manager

외부 시크릿 제공자가 어떻게 동작하는지, 접근 모델, 비밀을 나열하고 가져오는 SQL 함수에 대한 자세한 내용은 외부 시크릿 제공자 문서를 참조하세요.

통합(integration)에 Openflow 접근 권한 부여

각 외부 시크릿 제공자 통합에 대해 execute-as 역할에 USAGE 권한을 부여하세요:

GRANT USAGE ON INTEGRATION MY_EXTERNAL_SECRET_PROVIDER_INTEGRATION
  TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;

Openflow는 이 역할에 보이는 통합을 자동으로 발견합니다.

커넥터에서 외부 시크릿 사용하기

외부 시크릿은 Snowflake Parameter Provider를 통해 Openflow 매개변수가 됩니다. 워크플로는 Openflow 커넥터 세대에 따라 다릅니다.

Gen 2 커넥터

시크릿을 받아들이는 커넥터 속성을 구성하면 Openflow UI가 해석된 시크릿을 드롭다운으로 표시합니다. 속성에 기대하는 시크릿을 선택하세요.

Gen 1 커넥터

Snowflake Parameter Provider는 각 외부 시크릿에서 생성된 매개변수를 하나의 매개변수 그룹으로 구성합니다. Fetch를 실행하면 각 매개변수 그룹이 생성된 Parameter Context가 됩니다. 매개변수를 gen 1 커넥터에 사용할 수 있게 하려면 커넥터의 프로세스 그룹에서 Parameter Context 상속을 구성하세요:

  1. Runtime UI의 오른쪽 위 메뉴에서 Controller Settings > Parameter Providers를 엽니다.
  2. Snowflake Parameter Provider에서 세 점 메뉴를 열고 Fetch를 선택합니다.
  3. 캔버스로 돌아갑니다.
  4. gen 1 커넥터의 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고, Configure로 들어가서 Parameter Context 상속을 구성합니다.
  5. 필요한 외부 시크릿에 해당하는 생성된 Parameter Context를 상속된 Parameter Context로 추가합니다.

Fetch 작업은 외부 시크릿에 해당하는 Parameter Context를 생성하거나 업데이트합니다. 시크릿을 추가하거나 교체(rotate)한 후 새로 고친 값이 필요하면 Fetch를 다시 실행하세요.

매개변수 매핑

이 매핑은 gen 1 커넥터의 생성된 Parameter Context와 매개변수 이름을 결정합니다.

각 외부 시크릿은 다음과 같이 매핑됩니다:

  • 그룹 이름: EXTERNAL_<통합_이름>.<시크릿_이름>.
  • 평문 값(Plaintext value): 이름이 시크릿 이름인 매개변수 하나.
  • JSON 객체 값: 각 스칼라, null이 아닌 최상위 속성에 대한 문자열 매개변수 하나.
  • 매개변수로 노출되지 않는 것: 중첩 객체, 배열, null 속성.

네이티브 Snowflake Secrets를 추가하는 Snowflake 데이터베이스 이름의 접두사로 EXTERNAL_을 사용하지 마세요. 공급자는 네이티브 Snowflake 시크릿을 <데이터베이스_이름>.<스키마_이름>으로 별도로 그룹화합니다. EXTERNAL_ 접두사는 외부 시크릿 매개변수 그룹을 위해 예약되어 있습니다.

평문 예시

my_secrets_int라는 통합에 my_api_token이라는 시크릿이 있으면, Snowflake Parameter Provider는 EXTERNAL_my_secrets_int.my_api_token 그룹을 my_api_token이라는 매개변수와 함께 생성합니다.

JSON 예시

my_secrets_int에 다음 JSON 값을 가진 service_config라는 시크릿이 있다고 할 때:

{
  "username": "<username>",
  "host": "<host>",
  "port": "<port>",
  "options": { "ssl": true },
  "tags": ["example"],
  "notes": null
}

Snowflake Parameter Provider는 EXTERNAL_my_secrets_int.service_config 그룹을 username, host, port 매개변수와 함께 생성합니다. options, tags, notes는 매개변수로 노출하지 않습니다.

통합 및 시크릿 필터링

execute-as 역할이 접근할 수 있는 것 이상으로 Openflow에 사용 가능한 외부 매개변수를 제한하려면 Runtime UI로 이동하여 오른쪽 위 메뉴에서 Controller Settings > Parameter Providers를 열고 Snowflake Parameter Provider를 선택한 뒤 다음 속성을 구성하세요:

  • Integration Name Pattern은 외부 시크릿 제공자 통합을 이름별로 필터링합니다.
  • Secret Name Pattern은 외부 시크릿을 이름별로 필터링합니다.

운영 고려 사항

  • 하나의 외부 매개변수를 해석하면 현재 참조된 통합을 통해 보이는 모든 시크릿이 나열되고 가져와집니다. 커넥터가 필요한 통합에만 execute-as 역할에 USAGE를 부여하세요. 필요한 경우 Integration Name Pattern과 Secret Name Pattern을 사용해 공급자가 처리하는 통합과 시크릿을 더 제한하세요.
  • gen 2 커넥터의 경우 시크릿을 추가하거나 교체한 후 커넥터를 중지했다가 시작하여 새 값을 적용하세요.
  • gen 1 커넥터의 경우 시크릿을 추가하거나 교체한 후 참조하는 구성 요소가 새로 고친 값을 사용하도록 해야 할 때 Fetch를 실행하세요.

Openflow 구성 문제 해결

통합 검증, 클라우드 트러스트 또는 공급자 권한 문제를 해결하려면 공급자별 설정 주제를 사용하세요. Openflow 특정 문제는 다음을 확인하세요:

증상 (Symptom) 해결 방법 (Remedy)
통합이 발견되지 않음 execute-as 역할이 통합에 대한 USAGE를 갖고 있고 통합이 Integration Name Pattern과 일치하는지 확인하세요.
시크릿이 매개변수로 노출되지 않음 시크릿이 Secret Name Pattern과 일치하고 그 값이 이 페이지에 설명된 지원 매핑을 사용하는지 확인하세요.
Gen 1 값이 오래되었거나 Parameter Context가 누락됨 Fetch를 실행하고 생성된 Parameter Context가 커넥터에 상속되는지 확인하세요.

더 알아보기 (Learn more)