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