4단계: Portal에서 Azure용 API 통합을 프록시 서비스에 연결하기
4단계: Portal에서 Azure용 API 통합을 프록시 서비스에 연결하기
이 문서는 서비스 주체(service principal)를 만들어서 이전 단계에서 만든 API 통합을 Azure API Management 서비스와 연결하는 방법을 설명해요. 서비스 주체 덕분에 Snowflake가 Azure AD와 인증하며 API Management 서비스를 호출할 수 있어요.
본문
외부 함수가 호출되면 Snowflake는 프록시 서비스(즉, Azure API Management 서비스)에 HTTP POST 명령을 보내고, 프록시 서비스는 그 POST를 원격 서비스(즉, Azure Functions)로 중계해요. Azure AD 테넌트의 서비스 주체 덕분에 Snowflake가 테넌트의 API Management 서비스를 호출할 때 Azure AD로 인증할 수 있어요.
이 주제는 이전 단계에서 만든 API 통합을 Azure API Management 서비스와 연결하기 위해 서비스 주체를 만드는 방법을 설명해요. 지침은 Azure Portal을 사용하든 ARM 템플릿을 사용하든 동일해요.
서비스 주체에 대한 자세한 내용은 Microsoft 문서 "Applications and service principals"를 참고해요: https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object
이전 단계
3단계: Snowflake에서 Azure용 API 통합 만들기
API 통합의 앱 이름과 동의 URL 얻기
서비스 주체를 만들기 전에 API 통합에 대한 몇 가지 정보가 필요해요.
-
아직 하지 않았다면 Snowflake 웹 인터페이스에 로그인해요.
-
이전 단계에서 만든 API 통합에 대해 DESCRIBE INTEGRATION 명령을 실행해요:
describe api integration integration_name;
-
DESCRIBE 결과에서:
-
AZURE_MULTI_TENANT_APP_NAME 열에서 앱 이름을 추적 워크시트의 해당 필드에 기록해요.
-
AZURE_CONSENT_URL 열에서 동의 URL을 추적 워크시트의 해당 필드에 기록해요. URL은 다음처럼 보여요:
-
https://login.microsoftonline.com/tenant_id/oauth2/authorize?client_id=snowflake_application_id&response_type=code
Snowflake에 Azure 테넌시 접근 권한 부여하기
Snowflake에 Azure 테넌시 접근 권한을 부여하려면 앞서 기록한 AZURE_CONSENT_URL이 필요해요.
-
URL을 브라우저에 붙여넣어요. 브라우저가 이 URL을 처리하면 Azure가 테넌트에서 Snowflake를 나타내는 서비스 주체를 자동으로 만들어요.
테넌시당 Snowflake용 서비스 주체를 한 번만 만들면 된다는 점을 기억하세요. Snowflake에 접근 권한이 부여된 후에는 다시 부여할 필요가 없어요. 즉, Azure용 외부 함수를 새로 만들 때마다 접근 권한을 다시 부여할 필요가 없어요.
이미 Snowflake가 Azure 테넌시에 접근 권한을 받았다면 Snowflake 웹 사이트가 보일 텐데,
SNOWFLAKE THE CLOUD DATA PLATFORM같은 내용이 보일 거예요. 그러면 나머지 작업을 건너뛰고 5단계(Snowflake에서 Azure용 외부 함수 만들기)로 진행하면 돼요.아직 Snowflake에 접근 권한이 없다면 Microsoft Permissions requested 페이지가 보일 거예요. 그러면 다음 작업을 계속해요.
-
Accept(동의) 버튼을 클릭해요. 이렇게 하면 Snowflake 계정을 위해 만들어진 Azure 서비스 주체가 Azure AD 테넌트 안의 어떤 리소스에서든 액세스 토큰을 얻을 수 있게 돼요.
이 시점에서 테넌트에 Snowflake를 나타내는 서비스 주체를 만드는 작업이 끝났어요.
다만 보안을 강화하려면 인가된 클라이언트만 Azure Function에 접근할 수 있게 해야 해요. 접근 제어 방법에 대한 지침은 생성 과정의 마지막 단계에서 제공돼요.
다음 단계
5단계: Snowflake에서 Azure용 외부 함수 만들기