6단계: Portal에서 프록시 서비스에 대한 Azure 보안 정책 만들기

이전 단계들을 통해 가져온 APIs와 Azure 함수를 Snowflake뿐 아니라 인증된 다른 클라이언트(예: Azure AD tenant에 있거나 Azure AD tenant에 서비스 주체가 있는 애플리케이션)에서 호출할 수 있습니다.

Snowflake만 Azure 함수를 호출하도록 허용하려면 토큰 유효성 검사를 실행해야 합니다. 토큰 유효성 검사를 실행하면 Snowflake는 API Management 서비스에 액세스하려고 할 때 Azure AD에서 가져온 JWT(JSON 웹 토큰) 액세스 토큰을 제시합니다. API Management 서비스는 JWT의 유효성 검사를 하거나 유효성 검사 없이 이를 전달할 수 있습니다.

이 항목에서는 토큰 유효성 검사 규칙을 정의하는 JWT 유효성 검사 정책을 추가하여 API Management 서비스에 대한 보안 정책을 만드는 지침을 제공합니다.

중요

API Management 서비스에 대한 보안 정책을 반드시 만드는 것이 좋습니다. 이 단계를 완료하면 Snowflake만 API Management 서비스를 통해 Azure 함수를 호출할 수 있습니다.

JWT 유효성 검사 정책에서 역할 기반 유효성 검사를 사용하고 싶다면 서비스 주체에 역할을 할당하는 방법을 설명한 Microsoft 서비스 주체 설명서: New-AzureADServiceAppRoleAssignment 를 참조하십시오.

이 항목의 내용:

Snowflake가 Azure 함수를 호출할 수 있도록 허용하는 JWT 유효성 검사 정책 만들기

이 섹션에서는 Snowflake가 Azure 함수를 호출할 권한을 부여하는 JWT(JSON 웹 토큰)의 유효성 검사를 위한 정책을 지정하는 방법을 보여줍니다. 유효성 검사 정책(《JWT 유효성 검사 정책》)에서는 JWT에서 다음 두 가지 클레임의 유효성을 검사합니다.

  • Snowflake 서비스 주체 애플리케이션 ID.

  • Azure 함수의 대상 애플리케이션 앱 ID(《대상 그룹 ID》 또는 그냥 《aud》).

Azure Active Directory에서 발급한 JWTs(JSON 웹 토큰)의 클레임에 대한 자세한 내용은 Microsoft 설명서: 액세스 토큰 을 참조하십시오.

다음 단계에서는 JSON 웹 토큰을 사용하도록 가져온 API를 구성합니다.

  1. Azure Portal에 아직 로그인하지 않았다면 로그인하십시오.

  2. API Management service 화면으로 이동합니다.

  3. API Management 서비스를 선택합니다.

  4. 왼쪽 열에서 APIs 섹션을 찾은 다음, 그 아래에 있는 APIs 옵션을 클릭합니다.

  5. All APIs 가 포함된 열에서 보안 정책을 추가할 API의 이름을 클릭합니다.

  6. In-bound Processing 을 찾습니다.

    1. + Add policy 를 클릭합니다.

    2. validate-jwt 를 클릭합니다.

    3. Header name 을 값 Authorization 으로 채웁니다.

    4. Azure 함수에 액세스하기 위해 Snowflake에서 제공하는 JWT(JSON 웹 토큰)에 대한 유효성 검사를 추가합니다.

      1. Required claims 를 찾아 + Add claim 을 클릭합니다.

      2. Name 필드를 aud (《audience》의 줄임말)로 채웁니다.

      3. 필요한 클레임 내에서 Values 를 찾아 +Add value 를 클릭합니다.

        복사한 UUID를 CREATE API INTEGRATION 명령의 azure_ad_application_id 필드에 추가합니다. 이것은 추적 워크시트의 Azure Function App AD Application ID 필드에 기록됩니다.

    5. Snowflake에 대해 별도의 《클레임》을 추가합니다.

      1. + Add claim 을 다시 클릭합니다.

      2. Name 필드를 리터럴 문자열 appid 로 채웁니다.

      3. 클레임 내에서 + Add value 를 클릭하고 Values 필드에 Snowflake 애플리케이션 ID를 추가합니다.

        Snowflake 애플리케이션 ID가 아직 없으면 다음 단계를 수행하여 얻을 수 있습니다(Snowflake 애플리케이션 ID는 Application ID 필드에 있음).

        1. 워크시트에서 앞서 입력한 AZURE_MULTI_TENANT_APP_NAME을 찾습니다.

        2. Azure Portal 검색 상자에서 Enterprise Applications 를 찾습니다.

          그러면 Enterprise applications | All applications 화면으로 이동합니다.

        3. 그 화면에서 AZURE_MULTI_TENANT_APP_NAME을 검색합니다.

          엔터프라이즈 애플리케이션 검색 상자에는 레이블이 없습니다. 엔터프라이즈 애플리케이션 목록 바로 위에 있는 넓은 필드를 찾습니다. 이 상자에는 First 50 shown, to search all of your applications, enter a display name or the application ID 와 비슷한 내용이 표시될 수 있습니다.

          AZURE_MULTI_TENANT_APP_NAME에 정확히 일치하는 항목을 찾지 못하면 이 이름의 첫 몇 글자만 사용하여 다시 검색해 보십시오(이름에 밑줄이 포함된 경우 밑줄이나 밑줄 뒤에 오는 문자는 포함하지 마십시오).

        4. AZURE_MULTI_TENANT_APP_NAME의 Application ID 값을 찾습니다.

  7. 다음을 Open ID URLs 에 붙여넣습니다.

    https://login.microsoftonline.com/<tenant_id>/.well-known/openid-configuration

    <tenant_id> 를 Azure AD Tenant ID(외부 함수 계획을 위한 전제 조건 섹션에 설명되어 있음)로 바꿉니다.

  8. Save 를 클릭합니다.

외부 함수 테스트하기

새 보안 정책에서 외부 함수가 올바르게 작동하는지 확인하려면 외부 함수를 다시 호출하십시오.

자세한 내용은 Azure용 외부 함수 호출하기 섹션을 참조하십시오.

Azure Functions 호출을 허용하는 IP 주소 제한하기(선택 사항)

JWT 유효성 검사 정책 지정(또는 역할 기반 유효성 검사 사용) 외에도, IP 주소를 제한하여 추가적인 보안을 구현할 수 있습니다. 이를 통해 API Management 서비스의 IP 주소만 Azure Function이 있는 Azure Functions 앱에 액세스하도록 허용할 수 있습니다.

IP 주소 제한에 대한 자세한 내용은 Microsoft 설명서: 인바운드 IP 주소 제한 을 참조하십시오.

다음 단계

없습니다. Azure용 외부 함수를 성공적으로 만들었습니다.