Microsoft Planetary Computer Pro에 대한 애플리케이션 인증 구성

이 문서에서는 개발자와 관리자가 Microsoft Planetary Computer Pro에 대한 보안 애플리케이션 인증 및 액세스를 설정하기 위한 단계별 지침을 제공합니다. 애플리케이션은 Microsoft Entra ID 및 관리 ID를 적용하여 자격 증명을 관리하지 않고도 원활하게 인증할 수 있으므로 Planetary Computer Pro 리소스와 안전하게 상호 작용할 수 있습니다. 애플리케이션이 Azure 또는 다른 환경에서 실행되는지 여부에 관계없이 이 가이드에서는 보안 액세스를 사용하도록 설정하기 위해 RBAC(역할 기반 액세스 제어) 및 토큰 획득을 비롯한 필요한 구성을 간략하게 설명합니다.

비고

Azure AD B2C 또는 소셜 ID 공급자와 같은 Microsoft Entra 외부 ID 지원 기능을 사용하는 애플리케이션의 경우 Planetary Computer Pro는 Microsoft Entra ID 인증에 대한 대안을 지원하지 않으므로 애플리케이션은 이러한 ID 솔루션을 프록시 인증 트래픽에 계속 사용해야 합니다.

인증 옵션 및 권장 사항

다음 표에는 애플리케이션이 실행되는 위치와 리소스에 액세스하는 방법에 따라 권장되는 인증 방법이 요약되어 있습니다.

애플리케이션 호스팅 환경 액세스 유형 필요 권장 ID 유형 Explanation
Azure에서 실행 (VM, App Service, Functions, Container Apps 등) App-Only(애플리케이션 자체의 역할) 관리 ID(사용자 할당 권장) 보안 및 관리 효율성: 코드 또는 구성에서 자격 증명(비밀 또는 인증서)을 저장하고 관리할 필요가 없습니다. Azure는 자격 증명 회전을 자동으로 처리합니다. 사용자 할당은 여러 리소스 간에 공유하는 데 선호됩니다.
Azure에서 실행 (VM, App Service, Functions, Container Apps 등) 위임됨(애플리케이션이 사용자를 대신하여 작동) 관리 ID(사용자 할당 권장) Azure 통합을 활용합니다. 애플리케이션 자체에 대한 관리 ID의 보안 이점을 표준 사용자 인증 흐름과 결합합니다. Azure 내에서 인프라 설정을 간소화합니다.
Azure 외부에서 실행 (온-프레미스, 기타 클라우드, 개발자 컴퓨터) App-Only(애플리케이션 자체의 역할) 서비스 프린시펄 외부 앱에 대한 표준: 비 Azure 애플리케이션이 Microsoft Entra ID로 인증하기 위해 설정된 방법입니다. 자격 증명(비밀 또는 인증서)을 안전하게 관리해야 합니다.
Azure 외부에서 실행 (온-프레미스, 기타 클라우드, 개발자 컴퓨터) 위임됨(애플리케이션이 사용자를 대신하여 작동) 서비스 프린시펄 외부 앱에 대한 표준: Entra ID에서 애플리케이션의 등록된 ID를 사용하여 Azure 외부의 애플리케이션에 대한 사용자 로그인 및 동의에 표준 OAuth 2.0 흐름을 사용하도록 설정합니다.
Azure 외부에서 실행(대안) App-Only 또는 위임됨 관리되는 식별 Azure 혜택 제공: Azure 컴퓨팅 서비스(예: VM 또는 컨테이너 앱)에서 애플리케이션을 호스팅하면 관리 ID의 향상된 보안 및 관리 효율성을 사용하여 원본 이 Azure가 아닌 것으로 간주되더라도 자격 증명 관리를 방지할 수 있습니다.

필수 조건

Azure에서 실행되는 애플리케이션

Azure에서 실행되는 애플리케이션의 경우 GeoCatalog 리소스에 액세스하기 위해 사용자 할당 관리 ID라는 Microsoft Entra ID 유형을 만드는 것이 좋습니다. 애플리케이션은 관리 ID를 사용하여 Microsoft Entra 토큰을 가져올 수 있습니다(자격 증명을 관리할 필요 없이 Microsoft Planetary Computer Pro에 액세스하기 위한 액세스 토큰 획득 섹션 참조). 관리 ID 및 선택할 형식에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요. Azure에서 실행되는 애플리케이션에 대한 사용자 할당 관리 ID를 만들려면 App Service 및 Azure Functions에 관리 ID를 사용하는 방법을 따릅니다.

Azure에서 실행되지 않는 애플리케이션

온-프레미스와 같이 Azure에서 실행되지 않거나 다른 클라우드 공급자에서 호스트되는 애플리케이션의 경우 보안 토큰을 수신하는 리디렉션 URI를 포함하여 Microsoft Entra 관리 센터에 애플리케이션을 등록 하여 앱과 Microsoft ID 플랫폼 간에 트러스트 관계를 설정하는 것이 좋습니다. Microsoft Entra에 앱을 등록하면 앱에 대한 서비스 주체가 자동으로 만들어지며 나중에 RBAC 역할을 할당할 수 있습니다. 애플리케이션에 Microsoft Entra ID 인증을 구성하는 설정이 있는 경우 등록된 앱의 "애플리케이션(클라이언트) ID" 및 "디렉터리(테넌트) ID"를 사용하여 이 작업을 수행할 수 있습니다.

이전에 권장한 대로 Microsoft Entra에 애플리케이션을 등록할 수 없는 경우 Azure VM 또는 컨테이너 앱에서 애플리케이션을 실행하는 또 다른 옵션이 있습니다. 사용자 할당 관리 ID를 생성하고, 아래 링크에 설명된 대로 가상 머신(VM) 또는 컨테이너 앱에 할당할 수 있습니다. Azure 가상 머신에서 관리 ID 구성Azure 컨테이너 앱에서 관리 ID. 애플리케이션은 관리 ID로 로그인하여 GeoCatalog 리소스에 액세스할 수 있습니다. 예를 들어 애플리케이션이 사용자 할당 관리 ID를 사용하여 VM 내에서 실행되도록 하려면 다음을 사용할 수 있습니다.

!az login  --identity --username <client_id|object_id|resource_id> 

Azure Portal에서 관리 ID의 클라이언트 ID, 개체 ID 또는 리소스 ID를 찾을 수 있습니다. CLI 대신 샘플 Python 코드는 Microsoft Planetary Computer Pro에 액세스하기 위한 액세스 토큰 획득 섹션 아래에 있습니다.

azure.identity.DefaultAzureCredential(managed_identity_client_id=<client_id>)

앞에서 설명한 대로 애플리케이션에 대한 사용자 할당 관리 ID 또는 서비스 주체를 만든 후에는 애플리케이션 액세스 시나리오 유형(앱 전용 액세스, 애플리케이션의 자체 ID 또는 위임된 액세스로만 작동, 로그인한 사용자를 대신하여 작동)을 결정해야 합니다.

앱 전용 액세스

이 액세스 시나리오에서 애플리케이션은 사용자가 기본 동작으로 로그인하지 않고 자체적으로 작동합니다. 애플리케이션에 대한 Microsoft Planetary Computer Pro RBAC 구성 섹션을 진행하여 애플리케이션에 적절한 역할을 할당할 수 있습니다.

위임된 액세스

이 액세스 시나리오에서는 사용자가 클라이언트 애플리케이션에 로그인했습니다. 클라이언트 애플리케이션은 사용자를 대신하여 리소스에 액세스합니다.  사용자 만들기 및 관리 섹션에 설명된 대로 애플리케이션 사용자에게 적절한 RBAC 역할이 할당되었는지 확인해야 합니다. 또한 다음 단계에 따라 위임된 권한으로 애플리케이션의 API 권한을 구성해야 합니다.

  1. Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>애플리케이션>앱 등록으로 이동한 다음 클라이언트 애플리케이션을 선택합니다.
  3. 관리에서 API 사용 권한을 선택합니다.
  4. 권한 추가 선택
  5. 조직에서 사용하는 API 탭 선택
  6. 검색 필드에 Azure Orbital Planetary Computer 입력
  7. 일치하는 항목을 선택합니다(앱 ID는 6388acc4-795e-43a9-a320-33075c1eb83b여야 합니다). Azure Orbital Microsoft Planetary Computer Pro로 표시됩니다.
  8. 위임된 권한 상자에서 선택합니다. user_impersonation 옆의 확인란을 선택합니다.
  9. 권한 추가를 선택합니다.
  10. "관리자 동의 부여" 링크를 선택합니다(테넌트에서 이 권한에 대한 관리자 동의를 부여하려는 의도로 가정).

위임된 인증 패턴은 QGIS에서 연결할 때도 사용됩니다.

애플리케이션에 대한 Microsoft Planetary Computer Pro RBAC 구성

Azure에서 실행되는 애플리케이션에 대한 관리 ID 또는 Azure에서 실행되지 않지만 Microsoft Entra에 등록된 애플리케이션의 서비스 주체를 만든 후에는 RBAC 구성을 통해 GeoCatalog 리소스에 액세스하기 위해 ID에 적절한 권한을 부여해야 합니다.

다음은 애플리케이션의 사용자 할당 관리 ID에 "GeoCatalog 관리자" 역할을 할당하도록 RBAC(Role-Based Access Control)를 구성하는 방법을 보여 주는 단계별 예제입니다. Azure Portal에서 이러한 동일한 단계를 수행하여 애플리케이션의 서비스 주체에 대한 RBAC를 구성할 수 있습니다.

  1. Azure Portal의 왼쪽에 있는 Microsoft Planetary Computer Pro 리소스 IAM 탭으로 이동합니다.

    RBAC를 구성하기 위한 Azure Portal의 IAM 블레이드 스크린샷

  2. 역할 할당 추가를 선택하고 "작업 함수 역할" 아래에서 GeoCatalog 관리자를 선택합니다.

    Azure Portal의 역할 할당 선택 스크린샷

  3. 다음 단추를 선택한 다음 관리 ID의 라디오 단추를 선택합니다.

    Azure Portal의 관리 ID 선택 스크린샷

  4. 구성원 선택을 선택하고 오른쪽의 관리 ID 선택 창에서 구독 및 사용자 할당 관리 ID를 선택합니다.

    Azure Portal에서 선택한 멤버 창의 스크린샷.

  5. 다음을 선택하여 정보를 확인하고 검토 + 할당을 완료합니다.

Microsoft Planetary Computer Pro에 액세스하기 위한 액세스 토큰 획득

애플리케이션에 적절한 권한을 부여하도록 RBAC를 구성한 후 애플리케이션은 요청을 인증하기 위해 액세스 토큰을 획득해야 합니다. 아래 Python 샘플 코드:

import azure.identity
credential = azure.identity.DefaultAzureCredential()
token = credential.get_token("https://geocatalog.spatio.azure.com/")
headers = {"Authorization": f"Bearer {token.token}"} 

비고

애플리케이션에 할당된 관리 ID가 여러 개 있는 경우 올바른 azure.identity.DefaultAzureCredential(managed_identity_client_id=<client_id>)ID를 명시적으로 전달해야 합니다. 또는 Azure Portal에서 애플리케이션의 환경 변수를 구성하여 올바른 관리 ID 클라이언트 ID를 추가할 "AZURE_CLIENT_ID" 수 있습니다.

비고

예상되는 사용자 인증 동작에 따라 .default 또는 user_impersonationcredential.get_token()의 범위로 추가할 수 있습니다.

비고

애플리케이션이 웹앱인 경우 코드 또는 앱 구성을 변경할 때마다 캐시된 자격 증명을 사용하지 않도록 웹 브라우저를 닫고 다시 열어야 합니다.

액세스 토큰에 대한 자세한 내용은 Microsoft ID 플랫폼의 액세스 토큰을 참조하세요. DefaultAzureCredentials() 호출을 통해 액세스 토큰을 획득하면 획득된 토큰이 자격 증명 인스턴스에 의해 캐시 됩니다. 토큰 수명 및 새로 고침은 자동으로 처리됩니다. 토큰이 항상 만료되지 않도록, 필요할 때마다 DefaultAzureCredential 인스턴스를 전달하여 GetToken() 또는 GetTokenAsync()을 호출할 수 있습니다. 긴 열린 세션을 유지해야 하는 경우 오류 처리기에서 토큰 만료를 처리하여 예외를 catch하고 새 토큰을 획득할 수 있습니다.

DefaultAzureCredentials()을 사용할 수 없고 대신 AzureCliCredential()와 같은 다른 방법을 사용하여 액세스 토큰을 획득하는 경우, 토큰의 수명 및 새로 고침을 관리해야 합니다. 자세한 내용은 Microsoft ID 플랫폼의 구성 가능한 토큰 수명Microsoft ID 플랫폼의 새로 고침 토큰 을 참조하세요.

다음 단계