Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

외부 소스의 OIDC 인증

OpenID Connect(OIDC) 인증을 사용하면 외부 소스의 장기 비밀번호나 키를 Foundry에 복제해 저장하지 않고 연결할 수 있습니다. Foundry와 원천 시스템 사이에 신뢰 관계를 설정하고, 실행할 때 발급한 짧은 수명의 토큰으로 접근합니다. 여기서 설명하는 것은 데이터 연결 워크로드의 인증이며 Foundry 사용자가 로그인할 때 사용하는 IdP 연동과는 구분합니다.

토큰을 발급하고 검증하는 주체

Foundry는 OIDC 신원 제공자 역할을 합니다. 동기화 같은 워크플로가 소스에 인증해야 할 때 해당 Data Connection 소스를 식별하는 claims를 포함한 토큰을 발급합니다. 원천 시스템은 토큰과 신뢰 조건을 검증하고, 필요한 경우 자체 액세스 토큰으로 교환하여 후속 요청을 허용합니다.

어떤 외부 리소스에 접근할 수 있는지는 원천 시스템의 인증 및 인가 도구에서 정합니다. 신뢰 관계에 소스 RID 조건을 넣으면 신뢰하지 않는 다른 Foundry 소스가 같은 외부 권한을 얻는 것을 막을 수 있습니다. issuer를 신뢰한다는 이유만으로 모든 소스에 같은 접근을 허용하지 않습니다.

지원 소스

소스설정 절차
OneLake 및 Azure Blob FilesystemAzure 저장소 연결
BigQueryBigQuery 연결
DatabricksDatabricks 연결
Google Cloud StorageGCS 연결
Amazon S3S3 연결
SnowflakeSnowflake 연결

소스마다 외부 신뢰 관계의 등록 위치와 토큰 사용 방식이 다릅니다. 해당 소스의 issuer, audience 및 소스 RID 조건을 원천 시스템에 구성합니다.

신원 토큰의 claims

다음 JSON은 토큰 구조를 설명하는 가상 값입니다. 실제 issuer URL, 소스 RID와 audience는 연결 구성에 맞는 값을 사용합니다.

{
  "iss": "https://issuer.example.com/foundry",
  "sub": "ri.magritte..source.7f3b8e21-4d9a-6c2e-1b7d-8a5f3c9e0b4f",
  "aud": "example-source-system-audience",
  "iat": 1704067200,
  "nbf": 1704067200,
  "exp": 1704070800,
  "jti": "example-token-identifier",
  "scp": "example-additional-scope"
}
Claim의미
issFoundry를 OIDC 신원 제공자로 식별하는 issuer URL입니다.
sub원천에 연결하는 Data Connection 소스의 RID입니다. 일반 사용자의 ID가 아닙니다.
aud대상 원천 시스템을 식별하도록 구성한 audience입니다.
iat발급 시각입니다.
nbf이 시각 이전에는 토큰을 사용할 수 없습니다.
exp토큰 만료 시각입니다.
jti토큰의 고유 식별자입니다.
scp추가 범위 정보입니다.

신뢰 조건에서 소스 RID를 제한할 때는 sub의 값을 사용합니다. 별도의 source-rid라는 claim을 임의로 추가하는 방식이 아닙니다. 예제의 시각 값은 Unix epoch 초이며 exp - iat는 3,600초입니다. Foundry가 발급한 OIDC 토큰의 유효 기간은 한 시간입니다.

Python 코드에서 사용

OIDC 토큰은 Data Connection 동기화뿐 아니라 외부 연결 변환, 외부 함수와 Compute Module 같은 Python 환경에서도 사용할 수 있습니다. 초기화된 소스의 get_session_credentials()로 갱신 가능한 인증 정보 제공자를 얻고, 그 제공자의 get()으로 현재 인증 정보를 받습니다. 구체적인 자료형과 호출 예제는 Python 소스 인터페이스에 있습니다.

원천에 따라 Foundry 토큰을 직접 사용하거나 한 번 더 교환해야 합니다. Snowflake는 해당 토큰을 OAuth 토큰으로 사용할 수 있고, Databricks는 OAuth 2.0 토큰 교환으로 원천이 발급한 토큰을 얻은 뒤 사용합니다. 외부 시스템의 토큰 교환을 생략한 채 모든 소스에 같은 Bearer 값을 보내지 않습니다.

장시간 실행 작업은 시작할 때 얻은 토큰을 계속 재사용하지 말고 소스에서 갱신된 인증 정보를 받아야 합니다. SDK의 갱신 기능은 실행 환경이 제공하는 갱신 처리기에 의존합니다. 원천 시스템이 교환해 준 액세스 토큰의 권한과 유효 기간은 그 시스템의 정책도 따릅니다.