워크로드 ID 페더레이션

이 문서에서는 소프트웨어 워크로드에 대한 워크로드 ID 페더레이션의 개요를 제공합니다. 워크로드 ID 페더레이션을 사용하면 비밀(지원되는 시나리오의 경우)을 관리할 필요 없이 Microsoft Entra 보호 리소스에 액세스할 수 있습니다.

GitHub Actions, Kubernetes에서 실행되는 워크로드 또는 Azure 외부의 컴퓨팅 플랫폼에서 실행되는 워크로드와 같은 시나리오에서 워크로드 ID 페더레이션을 사용할 수 있습니다.

워크로드 ID 페더레이션을 사용하는 이유

이 비디오에서 워크로드 ID 페더레이션을 사용하는 이유를 알아보세요.

일반적으로 소프트웨어 워크로드(예: 애플리케이션, 서비스, 스크립트 또는 컨테이너 기반 애플리케이션)는 리소스를 인증하고 액세스하거나 다른 서비스와 통신하기 위해 ID가 필요합니다. 이러한 워크로드가 Azure에서 실행되면 관리 ID를 사용할 수 있으며 Azure 플랫폼에서 자격 증명을 관리합니다. 그러나 Azure에서 실행되는 소프트웨어 워크로드에는 관리 ID만 사용할 수 있습니다. Azure 외부에서 실행되는 소프트웨어 워크로드의 경우 애플리케이션 자격 증명(비밀 또는 인증서)을 사용하여 Microsoft Entra 보호 리소스(예: Azure, Microsoft Graph, Microsoft 365 또는 타사 리소스)에 액세스해야 합니다. 이러한 자격 증명은 보안 위험을 초래하며 안전하게 저장되고 정기적으로 회전해야 합니다. 또한 자격 증명이 만료될 경우 서비스 가동 중지 시간이 발생할 위험이 있습니다.

워크로드 ID 페더레이션을 사용하여 GitHub 또는 Google과 같은 외부 IdP(ID 공급자)의 토큰을 신뢰하도록 Microsoft Entra ID에서 사용자가 할당한 관리 ID 또는 앱 등록을 구성합니다. Microsoft Entra ID의 사용자가 할당한 관리 ID 또는 앱 등록은 온-프레미스 Kubernetes 또는 GitHub Actions 워크플로에서 실행되는 소프트웨어 워크로드의 ID가 됩니다. 신뢰 관계가 만들어지면 외부 소프트웨어 워크로드는 외부 IdP의 신뢰할 수 있는 토큰을 Microsoft ID 플랫폼의 액세스 토큰으로 교환합니다. 그러면 소프트웨어 워크로드가 해당 액세스 토큰을 사용하여 워크로드에 액세스 권한이 부여된 Microsoft Entra 보호 리소스에 액세스합니다. 사용자는 자격 증명을 수동으로 관리하는 유지 관리 부담이 제거되고 비밀이 유출되거나 인증서가 만료될 위험이 없습니다.

지원되는 시나리오

워크로드 ID 페더레이션을 사용하여 Microsoft Entra 보호 리소스에 액세스하기 위해 지원되는 시나리오는 다음과 같습니다.

  • Kubernetes 클러스터에서 실행되는 워크로드(AKS(Azure Kubernetes Service), Amazon Web Services EKS, GKE(Google Kubernetes Engine) 또는 온-프레미스) Microsoft Entra ID의 사용자 할당 관리 ID 또는 앱과 Kubernetes 워크로드 간에 트러스트 관계를 설정합니다(워크로드 ID 개요에 설명됨).
  • GitHub Actions. 먼저 Microsoft Entra ID의 사용자가 할당한 관리 ID 또는 애플리케이션Microsoft Entra 관리 센터에서 또는 Microsoft Graph를 사용하여 GitHub 리포지토리 간에 트러스트 관계를 구성합니다. Microsoft ID 공급자에서 액세스 토큰을 얻고 Azure 리소스에 액세스하도록 GitHub Actions 워크플로를 구성합니다.
  • Google Cloud 먼저 Microsoft Entra ID의 사용자가 할당한 관리 ID 또는 앱과 Google Cloud의 ID 간에 트러스트 관계를 구성합니다. 그런 다음, Google Cloud에서 실행되는 소프트웨어 워크로드를 구성하여 Microsoft ID 공급자로부터 액세스 토큰을 얻고 Microsoft Entra 보호 리소스에 액세스합니다. Google Cloud의 앱에서 Microsoft Entra로 보호되는 리소스에 액세스를 참조하세요.
  • AWS(Amazon Web Services)에서 실행되는 워크로드 먼저 Microsoft Entra ID의 사용자가 할당한 관리 ID 또는 앱과 Amazon Cognito의 ID 간에 트러스트 관계를 구성합니다. 그런 다음, AWS에서 실행되는 소프트웨어 워크로드를 구성하여 Microsoft ID 공급자로부터 액세스 토큰을 얻고 Microsoft Entra 보호 리소스에 액세스합니다. AWS와 워크로드 ID 페더레이션을 참조하세요.
  • Azure 외부의 컴퓨팅 플랫폼에서 실행되는 다른 워크로드 Microsoft Entra ID의 사용자가 할당한 관리 ID 또는 애플리케이션과 컴퓨팅 플랫폼의 외부 IdP 간에 신뢰 관계를 구성합니다. 해당 플랫폼에서 발급한 토큰을 사용하여 Microsoft 에코시스템에서 Microsoft ID 플랫폼을 인증하고 API를 호출할 수 있습니다. 클라이언트 자격 증명 흐름을 사용하여 저장된 인증서를 사용하여 직접 만드는 대신 ID 공급자의 JWT를 전달하여 Microsoft ID 플랫폼 액세스 토큰을 얻습니다.
  • SPIFFE 및 SPIRE는 플랫폼 및 클라우드 공급업체 간에 배포된 소프트웨어 워크로드에 ID를 제공하기 위한 플랫폼에 구애받지 않는 오픈 소스 표준 집합입니다. 먼저 Microsoft Entra ID의 사용자가 할당한 관리 ID 또는 앱과 외부 워크로드의 SPIFFE ID 간에 트러스트 관계를 구성합니다. 그런 다음, 외부 소프트웨어 워크로드를 구성하여 Microsoft ID 공급자로부터 액세스 토큰을 얻고 Microsoft Entra 보호 리소스에 액세스합니다. SPIFFE 및 SPIRE를 사용한 워크로드 ID 페더레이션을 참조하세요.
  • Azure Pipelines(미리 보기)에서 새 서비스 연결을 만듭니다. 워크로드 ID 페더레이션을 사용하여 Azure Resource Manager 서비스 연결을 만듭니다.

참고 항목

Microsoft Entra ID 발급 토큰은 페더레이션 ID 흐름에 사용되지 않을 수 있습니다. 페더레이션 ID 자격 증명 흐름은 Microsoft Entra ID에서 발급한 토큰을 지원하지 않습니다.

작동 원리

외부 IdP와 Microsoft Entra ID의 사용자가 할당한 관리 ID 또는 애플리케이션 간에 트러스트 관계를 만듭니다. 페더레이션 ID 자격 증명은 애플리케이션 또는 관리 ID에서 신뢰할 수 있어야 하는 외부 IdP의 토큰을 나타내는 데 사용됩니다. 페더레이션 ID를 구성합니다.

  • Microsoft Entra 관리 센터, Azure CLI, Azure PowerShell, Azure SDK 및 ARM(Azure Resource Manager) 템플릿을 통해 사용자가 할당한 관리 ID에서. 외부 워크로드는 액세스 토큰을 사용하여 비밀을 관리할 필요 없이(지원되는 시나리오에서) Microsoft Entra 보호 리소스에 액세스할 수 있습니다. 트러스트 관계를 구성하는 단계는 시나리오 및 외부 IdP에 따라 다릅니다.
  • Microsoft Entra 관리 센터 또는 Microsoft Graph를 통해 앱 등록에서. 이 구성을 사용하면 Azure 외부에서 비밀을 관리할 필요 없이 애플리케이션에 대한 액세스 토큰을 가져올 수 있습니다. 자세한 내용은 외부 ID 공급자를 신뢰하도록 앱 구성을 참조하세요.

그러나 액세스 토큰에 대한 외부 토큰을 교환하는 워크플로는 모든 시나리오에서 동일합니다. 다음 다이어그램에서는 액세스 토큰에 대한 외부 토큰을 교환한 다음 Microsoft Entra 보호 리소스에 액세스하는 워크로드의 일반적인 워크플로를 보여줍니다.

액세스 토큰 및 Azure에 액세스하기 위해 교환된 외부 토큰을 보여 주는 다이어그램

  1. 외부 워크로드(예: GitHub Actions 워크플로)는 외부 IdP(예: GitHub)에서 토큰을 요청합니다.
  2. 외부 IdP는 외부 워크로드에 토큰을 발행합니다.
  3. 외부 워크로드(예: GitHub 워크플로의 로그인 작업)는 토큰을 Microsoft ID 플랫폼 보내고 액세스 토큰을 요청합니다.
  4. Microsoft ID 플랫폼은 사용자가 할당한 관리 ID 또는 앱 등록에서 트러스트 관계를 확인하고 외부 IdP의 OIDC(Open ID Connect) 발급자 URL에 대해 외부 토큰의 유효성을 검사합니다.
  5. 검사가 충족되면 Microsoft ID 플랫폼은 외부 워크로드에 액세스 토큰을 발행합니다.
  6. 외부 워크로드는 Microsoft ID 플랫폼의 액세스 토큰을 사용하여 Microsoft Entra 보호 리소스에 액세스합니다. 예를 들어 GitHub Actions 워크플로는 액세스 토큰을 사용하여 웹앱을 Azure App Service에 게시합니다.

Microsoft ID 플랫폼은 외부 IdP의 OIDC 엔드포인트에서 다운로드될 때 처음 100개 서명 키만 저장합니다. 외부 IdP가 100개 서명 키를 초과할 경우 워크로드 ID 페더레이션을 사용할 때 오류가 발생할 수 있습니다.

다음 단계

워크로드 ID 페더레이션의 작동 방식에 대해 자세히 알아보세요.

  • 사용자가 할당한 관리 ID에서 페더레이션 ID 자격 증명을 생성, 삭제, 가져오기 또는 업데이트하는 방법입니다.
  • 앱 등록에서 페더레이션 ID 자격 증명을 생성, 삭제, 가져오기 또는 업데이트하는 방법입니다.
  • 워크로드 ID 개요를 읽어 Microsoft ID 공급자로부터 액세스 토큰을 얻고 Microsoft Entra 보호 리소스에 액세스하도록 Kubernetes 워크로드를 구성하는 방법을 알아봅니다.
  • Microsoft ID 공급자에서 액세스 토큰을 얻고 Microsoft Entra ID 보호 리소스에 액세스하도록 GitHub Actions 워크플로를 구성하는 방법에 대한 자세한 내용은 GitHub Actions 설명서를 참조하세요.
  • Microsoft Entra ID에서 OAuth 2.0 클라이언트 자격 증명 부여 및 다른 IdP에서 발급한 클라이언트 어설션을 사용하여 토큰을 얻는 방법입니다.
  • 외부 ID 공급자에서 만든 JWT의 필수 형식에 대한 정보는 어설션 형식을 참조하세요.