이 문서에서는 Amazon EKS(Amazon Elastic Kubernetes Service) 및 AKS(Azure Kubernetes Service)가 클라우드 플랫폼 서비스에 액세스하기 위해 Kubernetes 워크로드에 대한 ID를 제공하는 방법을 설명합니다. AWS(Amazon Web Services) IAM(Identity and Access Management) 및 Microsoft Entra ID에 대한 자세한 비교는 다음을 참조하세요.
이 가이드에서는 AKS 클러스터, 기본 제공 서비스 및 추가 항목이 관리 ID 를 사용하여 부하 분산 장치 및 관리 디스크와 같은 Azure 리소스에 액세스하는 방법을 설명합니다. 또한 이 문서에서는 AKS 워크로드가 연결 문자열, 액세스 키 또는 사용자 자격 증명 없이도 Azure 리소스에 액세스할 수 있도록 Microsoft Entra 워크로드 ID 사용하는 방법을 보여 줍니다.
참고 항목
이 문서는 Amazon EKS에 익숙한 전문가가 Azure Kubernetes Service(AKS)를 이해하는 데 도움이 되는 일련의 문서의 일부입니다.
Amazon EKS ID 및 액세스 관리
Amazon Elastic Kubernetes Service(EKS)는 Kubernetes Pod 내에서 ID 및 액세스 관리를 관리하기 위한 네이티브 옵션을 제공합니다. 이러한 옵션에는 서비스 계정에 대한 IAM 역할 및 Amazon EKS 서비스 연결 역할이 포함됩니다.
서비스 계정에 대한 IAM 역할
서비스 계정에 대한 IAM 역할을 사용하면 Kubernetes 서비스 계정과 IAM 역할을 연결할 수 있습니다. 이 연결은 서비스 계정을 활용하는 모든 Pod 내의 컨테이너에 AWS 권한을 제공합니다. 서비스 계정에 IAM 역할을 사용할 경우의 이점은 다음과 같습니다.
최소 권한 : 서비스 계정에 특정 IAM 권한을 할당하여 해당 서비스 계정을 사용하는 Pod만 해당 권한에 액세스할 수 있도록 할 수 있습니다. 이렇게 하면 노드의 모든 Pod에 대해 노드 IAM 역할에 확장된 권한을 부여할 필요가 없으므로 보다 안전하고 세분화된 접근 방식을 제공합니다. 또한 이 기능을 사용하면 kube2iam같은 타사 솔루션이 필요하지 않습니다. 자세한 내용은 서비스 계정에 대한IAM 역할을 참조하세요.
자격 증명 격리: Pod 내의 각 컨테이너는 해당 서비스 계정과 연결된 IAM 역할에 대한 자격 증명만 검색할 수 있습니다. 이렇게 격리하면 컨테이너가 다른 Pod의 다른 컨테이너에 속한 자격 증명에 액세스할 수 없습니다.
감사 가능성: Amazon EKS는 Amazon CloudTrail 활용하여 액세스 및 이벤트 로깅을 제공하여 소급 감사 및 규정 준수를 용이하게 합니다.
서비스 계정의 IAM 역할에 대한 자세한 내용은 공식 설명서참조하세요.
Amazon EKS 서비스 연결 역할
Amazon EKS 서비스 연결 역할은 Amazon EKS에 직접 연결된 고유한 IAM 역할입니다. 이러한 미리 정의된 역할에는 연결된 역할을 대신하여 AWS 서비스를 호출하는 데 필요한 모든 권한이 포함됩니다. Amazon EKS의 주요 서비스 연결 역할은 amazon EKS 노드 IAM 역할 .
Amazon EKS 노드 kubelet
디먼은 Amazon EKS 노드 IAM 역할을 활용하여 노드를 대신하여 AWS 서비스에 대한 API 호출을 합니다. IAM 인스턴스 프로필 및 관련 정책은 이러한 API 호출에 대한 권한을 제공합니다. 이 설정은 EKS 클러스터 내의 노드에 대한 IAM 역할 관리를 간소화합니다.
Amazon EKS 서비스 연결 역할에 대한 자세한 내용은 공식 설명서방문하세요.
추가 정보
서비스 계정 및 Amazon EKS 서비스 연결 역할에 대한 IAM 역할 외에도 Amazon EKS에서 ID 및 액세스 관리의 다른 필수 측면이 있습니다.
amazon EKS RBAC 권한 부여 : Amazon EKS는 RBAC(역할 기반 액세스 제어)를 지원하여 클러스터 내에서 Kubernetes 리소스에 대한 세분화된 권한을 정의할 수 있도록 합니다.
AWS ID 및 액세스 관리(IAM): IAM은 EKS를 비롯한 AWS 서비스에 대한 포괄적인 ID 관리 솔루션을 제공합니다. 이를 통해 사용자, 그룹 및 역할을 만들고 관리하여 EKS 리소스에 대한 액세스를 제어할 수 있습니다.
Amazon EKS 보안 그룹: Amazon EKS를 사용하면 클러스터 내에서 실행되는 Pod에 보안 그룹 규칙을 적용하여 인바운드 및 아웃바운드 트래픽을 제어할 수 있습니다.
Amazon EKS에서 ID 및 액세스 관리를 관리하는 방법에 대한 자세한 내용은 공식 Amazon EKS 설명서참조하세요.
AKS 클러스터 관리 ID
AKS(Azure Kubernetes Service) 클러스터에는 부하 분산 장치 및 관리 디스크와 같은 Azure 리소스에 액세스하려면 Microsoft Entra ID 필요합니다. Azure 리소스에 대한 관리 ID는 AKS 클러스터에서 다른 Azure 서비스로의 액세스 권한을 부여하는 권장 방법입니다.
관리 ID란?
개발자에게 일반적인 과제는 서비스 간 통신을 보호하는 데 사용되는 비밀, 자격 증명, 인증서 및 키를 관리하는 것입니다. 관리 ID는 개발자가 이러한 자격 증명을 관리할 필요가 없도록. 관리 ID를 사용하면 자격 증명을 관리하거나 코드에 포함하지 않고 AKS 클러스터를 인증할 수 있습니다. 관리 ID를 사용하면 Azure RBAC(역할 기반 액세스 제어) 역할을 ID에 할당하여 Azure의 특정 리소스에 대한 권한을 부여합니다.
다음은 두 가지 유형의 관리 ID입니다.
시스템 할당 . 가상 머신과 같은 일부 Azure 리소스를 사용하면 리소스에서 직접 관리 ID를 사용하도록 설정할 수 있습니다. 시스템 할당 관리 ID를 사용하도록 설정하는 경우:
- 특수 형식의 서비스 주체는 ID에 대한 Microsoft Entra ID에 만들어집니다. 서비스 주체는 해당 Azure 리소스의 수명 주기에 연결됩니다. Azure 리소스가 삭제되면 Azure는 자동으로 서비스 주체를 삭제합니다.
- 기본적으로 Azure 리소스만 이 ID를 사용하여 Microsoft Entra ID에서 토큰을 요청할 수 있습니다.
- 관리 ID에 하나 이상의 서비스에 대한 액세스 권한을 부여합니다.
- 시스템 할당 서비스 주체의 이름은 항상 생성된 Azure 리소스의 이름과 동일합니다.
사용자 할당 . 또한 관리 ID를 독립 실행형 Azure 리소스로 만들 수도 있습니다. 사용자 할당 관리 ID 만들고 하나 이상의 Azure 리소스에 할당할 수 있습니다. 사용자 할당 관리 ID를 사용하도록 설정하는 경우:
- 특수 형식의 서비스 주체는 ID에 대한 Microsoft Entra ID에 만들어집니다. 서비스 주체는 서비스 주체를 사용하는 리소스와 별도로 관리됩니다.
- 사용자 할당 ID는 여러 리소스에서 사용할 수 있습니다.
- 관리 ID에 하나 이상의 서비스에 대한 액세스 권한을 부여합니다.
두 가지 유형의 관리 ID 간의 차이점에 대한 자세한 내용은 관리 ID 유형을 참조하세요.
AKS(Azure Kubernetes Service)의 관리 ID
이러한 두 가지 유형의 관리 ID는 두 유형 중 하나를 사용하여 AKS 클러스터에서 Azure 리소스에 대한 액세스 권한을 부여할 수 있다는 측면에서 유사합니다. 둘 사이의 주요 차이점은 시스템 할당 관리 ID가 AKS 클러스터와 같은 단일 Azure 리소스와 연결된 반면 사용자 할당 관리 ID 자체는 독립 실행형 Azure 리소스라는 점입니다. 관리 ID 유형 간의 차이점에 대한 자세한 내용은 azure 리소스 관리 ID의 관리 ID 유형을 참조하세요.
AKS 클러스터에서 사용할 수 있는 관리 ID에는 다음 세 가지 유형이 있습니다.
시스템 할당 관리 ID: 이 유형의 관리 ID는 AKS 클러스터와 같은 단일 Azure 리소스와 연결됩니다. 클러스터의 수명 주기에만 존재합니다.
사용자 할당 관리 ID: 사용자 할당 관리 ID는 AKS 클러스터에서 다른 Azure 서비스에 대한 액세스 권한을 부여하는 데 사용할 수 있는 독립 실행형 Azure 리소스입니다. 클러스터와 별도로 유지되며 여러 Azure 리소스에서 사용할 수 있습니다.
미리 만든 kubelet 관리 ID: kubelet에서 Azure의 다른 리소스에 액세스하는 데 사용할 수 있는 선택적 사용자 할당 ID입니다. kubelet에 대해 사용자 할당 관리 ID가 지정되지 않은 경우 AKS는 노드 리소스 그룹에 사용자 할당 kubelet ID를 만듭니다.
AKS는 관리 ID를 어떻게 사용하나요?
AKS 클러스터를 배포하면 시스템 할당 관리 ID 자동으로 만들어집니다. 사용자 할당 관리 ID사용하여 클러스터를 만들도록 선택할 수도 있습니다. 클러스터는 이 관리 ID를 사용하여 Microsoft Entra ID에서 토큰을 요청한 다음, Azure에서 실행되는 다른 리소스에 대한 액세스 권한을 부여하는 데 사용됩니다.
관리 ID에 Azure RBAC 역할을 할당하면 클러스터에 특정 리소스에 액세스할 수 있는 권한을 부여할 수 있습니다. 예를 들어 관리 ID에 Azure Key Vault의 비밀에 액세스할 수 있는 Azure RBAC 역할을 할당할 수 있습니다. 이렇게 하면 자격 증명을 관리하지 않고 클러스터에 대한 액세스 권한을 쉽게 부여할 수 있습니다.
AKS에서 관리 ID 사용
AKS에서 관리 ID를 사용하는 경우 비밀을 프로비전하거나 회전할 필요가 없습니다. Azure는 ID의 자격 증명을 관리합니다. 이렇게 하면 추가 비밀을 관리하지 않고도 애플리케이션에서 액세스 권한을 부여할 수 있습니다.
관리 ID를 사용하는 AKS 클러스터가 이미 있는 경우 다른 유형의 관리 ID로 업데이트할 수 있습니다. 그러나 컨트롤 플레인 구성 요소가 새 ID로 전환되는 동안 지연이 있을 수 있습니다. 이 프로세스는 몇 시간이 걸릴 수 있으며 이 시간 동안 컨트롤 플레인 구성 요소는 토큰이 만료될 때까지 이전 ID를 계속 사용합니다.
AKS에서 사용하는 관리 ID 요약
AKS는 다양한 유형의 관리 ID를 사용하여 다양한 기본 제공 서비스 및 추가 기능을 사용하도록 설정합니다. AKS에서 사용하는 관리 ID에 대한 요약은 다음과 같습니다.
ID | 사용 사례 | 기본 사용 권한 |
---|---|---|
컨트롤 플레인(시스템 할당) | AKS 컨트롤 플레인 구성 요소에서 수신 부하 분산 장치, AKS 관리 공용 IP, 클러스터 자동 크기 조정기, Azure 디스크, 파일 및 Blob CSI 드라이버를 비롯한 클러스터 리소스를 관리하는 데 사용됩니다. | 노드 리소스 그룹에 대한 기여자 역할 |
Kubelet(사용자 할당) | ACR(Azure Container Registry)을 사용하여 인증하는 데 사용됩니다. | N/A(Kubernetes v1.15 이상) |
추가 기능 ID(예: AzureNPM, AzureCNI 네트워크 모니터링, Azure Policy, Calico 등) | 이러한 추가 기능에는 ID가 필요하지 않습니다. | 해당(N/A) |
애플리케이션 라우팅 | Azure DNS 및 Azure Key Vault 인증서를 관리합니다. | Key Vault에 대한 Key Vault 비밀 사용자 역할, DNS 영역에 대한 DNS 영역 기여자 역할, 프라이빗 DNS 영역에 대한 프라이빗 DNS 영역 기여자 역할 |
수신 Application Gateway | 필요한 네트워크 리소스를 관리합니다. | 노드 리소스 그룹에 대한 기여자 역할 |
OMS 에이전트 | AKS 메트릭을 Azure Monitor로 보내는 데 사용됩니다. | 모니터링 메트릭 게시자 역할 |
가상 노드(ACI 커넥터) | ACI(Azure Container Instances)에 필요한 네트워크 리소스를 관리합니다. | 노드 리소스 그룹에 대한 기여자 역할 |
비용 분석 | 비용 할당 데이터를 수집하는 데 사용됩니다. | 해당(N/A) |
워크로드 ID(Microsoft Entra 워크로드 ID) | 애플리케이션이 Microsoft Entra 워크로드 ID를 사용하여 클라우드 리소스에 안전하게 액세스할 수 있도록 합니다. | 해당(N/A) |
AKS의 관리 ID에 대한 자세한 내용은 Azure Kubernetes Service관리 ID를 사용합니다.
Kubernetes에 대한 Microsoft Entra 워크로드 ID
Microsoft Entra 워크로드 ID Kubernetes와 통합되어 AKS 클러스터에 배포된 워크로드가 Azure Key Vault 및 Microsoft Graph와 같은 Microsoft Entra 보호 리소스에 액세스할 수 있도록 합니다. Kubernetes에 네이티브 기능을 사용하여 외부 ID 공급자와 페더레이션합니다. 자세한 내용은 Azure Kubernetes ServiceMicrosoft Entra 워크로드 ID를 사용합니다.
Microsoft Entra 워크로드 ID를 사용하려면 Kubernetes 내에서 서비스 계정을 구성해야 합니다. 이 서비스 계정은 Pod에서 Azure 리소스를 안전하게 인증하고 액세스하는 데 사용됩니다. Microsoft Entra 워크로드 ID는 애플리케이션 등록과 함께 Azure ID 클라이언트 라이브러리 또는 MSAL(Microsoft 인증 라이브러리) 컬렉션에서 잘 작동합니다.
Kubernetes 클러스터에서 Microsoft Entra Workload ID를 완전히 활용하려면 토큰을 발급하고 토큰 유효성 검사를 위해 OIDC 검색 문서를 게시하도록 AKS 클러스터를 구성해야 합니다. 자세한 내용은 Azure Kubernetes ServiceOpenID Connect 공급자 만들기를 참조하세요.
또한 Kubernetes 토큰을 신뢰하도록 Microsoft Entra 애플리케이션을 구성해야 합니다. 그런 다음 개발자는 Kubernetes 서비스 계정을 사용하여 토큰을 가져오도록 배포를 구성할 수 있습니다. 그러면 Microsoft Entra 워크로드 ID로 Microsoft Entra 토큰으로 교환됩니다. 마지막으로 AKS 클러스터 워크로드는 이러한 Microsoft Entra 토큰을 사용하여 Azure에서 보호된 리소스에 안전하게 액세스할 수 있습니다.
다음 다이어그램과 같이 Kubernetes 클러스터는 Kubernetes 서비스 계정에 토큰을 발급하는 보안 토큰 발급자가 됩니다. 이러한 토큰을 Microsoft Entra 애플리케이션에서 신뢰할 수 있도록 구성할 수 있습니다. 그런 다음, Azure ID SDK 또는 MSAL(Microsoft 인증 라이브러리)을 사용하여 Microsoft Entra 액세스 토큰으로 토큰을 교환할 수 있습니다.
-
kubelet
에이전트는 구성 파일 경로에서 워크로드에 서비스 계정 토큰을 투영합니다. - Kubernetes 워크로드는 프로젝션된 서명된 서비스 계정 토큰을 Microsoft Entra ID로 보내고 액세스 토큰을 요청합니다.
- Microsoft Entra ID는 OIDC 검색 문서를 사용하여 사용자 정의 관리 ID 또는 등록된 애플리케이션에 대한 신뢰를 확인하고 들어오는 토큰의 유효성을 검사합니다.
- Microsoft Entra ID는 보안 액세스 토큰을 발급합니다.
- Kubernetes 워크로드는 Microsoft Entra 액세스 토큰을 사용하여 Azure 리소스에 액세스합니다.
Microsoft Entra 워크로드 ID와 관련된 자세한 내용, 설명서 및 자동화는 다음 리소스를 참조하세요.
- Azure 워크로드 ID 오픈 소스 프로젝트
- 워크로드 ID 페더레이션
- Kubernetes와의 Microsoft Entra 워크로드 ID 페더레이션
- 외부 OIDC ID 공급자와의 Microsoft Entra 워크로드 ID 페더레이션
- 최소 Microsoft Entra 워크로드 ID 페더레이션
- Microsoft Entra 워크로드 ID 설명서
- Microsoft Entra 워크로드 ID 빠른 시작
- 예제: .NET Standard 애플리케이션 사용자 할당 관리 ID와 Kubernetes용 Microsoft Entra 워크로드 ID 사용
워크로드 예제
AKS 클러스터에서 실행되는 워크로드 예제는 프런트 엔드 및 백 엔드 서비스로 구성됩니다. 이러한 서비스는 Microsoft Entra 워크로드 ID를 사용하여 Azure Key Vault, Azure Cosmos DB, Azure Storage 계정 및 Azure Service Bus 네임스페이스를 비롯한 Azure 서비스에 액세스합니다. 이 예제 워크로드를 설정하려면 다음 필수 조건을 충족해야 합니다.
- OpenID Connect 발급자 사용하여 AKS 클러스터를 설정하고 Microsoft Entra Workload ID 사용하도록.
- 워크로드 네임스페이스Kubernetes 서비스 계정 만듭니다.
- Microsoft Entra 사용자 할당 관리 ID 또는 등록된 애플리케이션 만듭니다.
- Microsoft Entra 관리 ID 또는 등록된 애플리케이션과 워크로드 서비스 계정 간에 페더레이션 ID 자격 증명을 설정합니다.
- Microsoft Entra 관리 ID 또는 등록된 애플리케이션에 적절한 권한이 있는 필요한 역할을 할당합니다.
- 워크로드를 배포하고 워크로드 ID를 사용하여 인증을 확인합니다.
Microsoft Entra 워크로드 ID 메시지 흐름
이 예제 워크로드에서 프런트 엔드 및 백 엔드 애플리케이션은 Microsoft Entra 보안 토큰을 획득하여 Azure PaaS(Platform as a Service) 서비스에 액세스합니다. 다음 다이어그램은 메시지 흐름을 보여 줍니다.
이 아키텍처의 Visio 파일을 다운로드합니다.
- Kubernetes는 Pod 또는 배포 사양에 따라 노드에서 예약될 때 Pod에 토큰을 발급합니다.
- Pod는 OIDC에서 발급한 토큰을 Microsoft Entra ID로 전송하여 특정
appId
및 리소스에 대한 Microsoft Entra 토큰을 요청합니다. - Microsoft Entra ID는 애플리케이션에 대한 트러스트를 확인하고 들어오는 토큰의 유효성을 검사합니다.
- Microsoft Entra ID는 보안 토큰을 발급합니다
{sub: appId, aud: requested-audience}
. . - Pod는 Microsoft Entra 토큰을 사용하여 대상 Azure 리소스에 액세스합니다.
Kubernetes 클러스터에서 엔드투엔드 Microsoft Entra 워크로드 ID 사용하려면 다음을 수행합니다.
- 해당 토큰의 유효성 검사를 허용하도록 토큰을 발급하고 OIDC 검색 문서를 게시하도록 AKS 클러스터를 구성합니다.
- Kubernetes 토큰을 신뢰하도록 Microsoft Entra 애플리케이션을 구성합니다.
- 개발자는 Kubernetes 서비스 계정을 사용하여 Kubernetes 토큰을 가져오기 위해 배포를 구성합니다.
- Microsoft Entra 워크로드 ID Microsoft Entra 토큰에 대한 Kubernetes 토큰을 교환합니다.
- AKS 클러스터 워크로드는 Microsoft Entra 토큰을 사용하여 Microsoft Graph와 같은 보호된 리소스에 액세스합니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- Paolo Salvatori | 수석 서비스 엔지니어
- Martin Gjoshevski | 선임 서비스 엔지니어
기타 기여자:
- Laura Nicolas | 선임 소프트웨어 엔지니어
- Chad Kittel | 주 소프트웨어 엔지니어
- Ed Price | 선임 콘텐츠 프로그램 관리자
- Theano Petersen | 기술 작가
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.
다음 단계
- Amazon EKS 전문가용 AKS
- Kubernetes 모니터링 및 로깅
- Kubernetes에 대한 네트워크 액세스 보호
- Kubernetes 클러스터에 대한 스토리지 옵션
- Kubernetes에 대한 비용 관리
- Kubernetes 노드 및 노드 풀 관리
- 클러스터 거버넌스
- Microsoft Entra의 AWS용 ID 관리 및 액세스 관리