외부 소스의 OIDC 인증
OpenID Connect(OIDC) 인증을 사용하면 외부 소스의 장기 비밀번호나 키를 Foundry에 복제해 저장하지 않고 연결할 수 있습니다. Foundry와 원천 시스템 사이에 신뢰 관계를 설정하고, 실행할 때 발급한 짧은 수명의 토큰으로 접근합니다. 여기서 설명하는 것은 데이터 연결 워크로드의 인증이며 Foundry 사용자가 로그인할 때 사용하는 IdP 연동과는 구분합니다.
토큰을 발급하고 검증하는 주체
Foundry는 OIDC 신원 제공자 역할을 합니다. 동기화 같은 워크플로가 소스에 인증해야 할 때 해당 Data Connection 소스를 식별하는 claims를 포함한 토큰을 발급합니다. 원천 시스템은 토큰과 신뢰 조건을 검증하고, 필요한 경우 자체 액세스 토큰으로 교환하여 후속 요청을 허용합니다.
어떤 외부 리소스에 접근할 수 있는지는 원천 시스템의 인증 및 인가 도구에서 정합니다. 신뢰 관계에 소스 RID 조건을 넣으면 신뢰하지 않는 다른 Foundry 소스가 같은 외부 권한을 얻는 것을 막을 수 있습니다. issuer를 신뢰한다는 이유만으로 모든 소스에 같은 접근을 허용하지 않습니다.
지원 소스
| 소스 | 설정 절차 |
|---|---|
| OneLake 및 Azure Blob Filesystem | Azure 저장소 연결 |
| BigQuery | BigQuery 연결 |
| Databricks | Databricks 연결 |
| Google Cloud Storage | GCS 연결 |
| Amazon S3 | S3 연결 |
| Snowflake | Snowflake 연결 |
소스마다 외부 신뢰 관계의 등록 위치와 토큰 사용 방식이 다릅니다. 해당 소스의 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 | 의미 |
|---|---|
iss | Foundry를 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의 갱신 기능은 실행 환경이 제공하는 갱신 처리기에 의존합니다. 원천 시스템이 교환해 준 액세스 토큰의 권한과 유효 기간은 그 시스템의 정책도 따릅니다.