AKS(Azure Kubernetes Service)의 클러스터 권한 부여 개념

이 문서에서는 AKS(Azure Kubernetes Service)가 Kubernetes API에 대해 인증된 호출자가 수행할 수 있는 작업을 결정하는 방법을 설명합니다. AKS에서 지원하는 두 가지 권한 부여 모델과 Azure ABAC 조건을 사용하여 세분화된 사용자 지정 리소스 제어를 다룹니다.

AKS가 처음에 호출자를 인증하는 방법은 클러스터 인증 개념을 참조하세요.

네 가지 AKS ID 시나리오 모두에 대한 방향은 AKS에 대한 액세스 및 ID 옵션을 참조하세요.

Kubernetes API 권한 부여

호출자가 인증되면 AKS는 호출자가 요청된 작업을 수행할 권한이 있는지 여부를 평가합니다. AKS는 Kubernetes API에 대한 두 가지 권한 부여 모델을 지원합니다.

  • Kubernetes RBAC(역할 기반 액세스 제어). 네이티브 Kubernetes 권한 부여 모델입니다. 사용 권한은 RoleClusterRole 개체로 정의되며, 각 클러스터에 저장된 RoleBindingClusterRoleBinding 개체를 통해 주체에게 부여됩니다.
  • Microsoft Entra ID 권한 부여. Microsoft Entra ID에 권한 부여 결정을 위임하는 AKS 권한 부여 웹후크입니다. 사용 권한은 Entra ID ID에 대한 Azure 역할 할당으로 부여되며 필요에 따라 Azure ABAC 조건으로 구체화할 수 있습니다.

동일한 클러스터에서 두 모델을 모두 사용할 수 있습니다. 기본값으로 Microsoft Entra ID 권한 부여를 권장하며 세분화된 클러스터 내 권한에 대해 Kubernetes RBAC를 예약합니다. 이 섹션의 나머지 부분에서는 각각을 사용하는 이유와 시기를 설명합니다.

Kubernetes RBAC

Kubernetes RBAC는 업스트림 Kubernetes 권한 부여 모델입니다. 리소스(예: pods, deployments)에 동사(예: get, list, create)를 부여하는 Role 또는 ClusterRole 개체를 작성하고, RoleBinding 또는 ClusterRoleBinding 개체를 사용하여 주체(사용자, 그룹, 또는 서비스 계정)에 바인딩합니다. Kubernetes API 서버의 기본 제공 RBAC 권한 부여자는 모든 요청에서 이러한 바인딩을 평가합니다.

원하는 경우 Kubernetes RBAC를 사용합니다.

  • Kubernetes 매니페스트로 작성된 세분화된 클러스터 내 네임스페이스별 액세스 제어는 보호되는 워크로드와 함께 제공됩니다.
  • 애플리케이션 구성과 동일한 신뢰할 수 있는 데이터 소스에 기반을 둔 GitOps 기반 권한 관리.
  • 워크로드가 Kubernetes API를 호출하는 데 사용하는 클러스터 내 서비스 계정에 대한 권한입니다.

Kubernetes RBAC 권한은 단일 클러스터로 범위가 지정됩니다. 많은 클러스터에 동일한 정책을 적용하려면 각 클러스터(일반적으로 GitOps를 통해)에 매니페스트를 적용해야 합니다. Microsoft Entra 사용자 및 그룹을 Kubernetes RoleBindingClusterRoleBinding 개체의 주체로 사용하여, 사람의 정체성이 여전히 귀하의 중앙 디렉터리에서 제공되도록 합니다.

Kubernetes RBAC 모델에 대한 배경 정보는 업스트림 Kubernetes RBAC 설명서를 참조하세요. AKS에서의 설정은 Microsoft Entra 통합과 함께 Kubernetes RBAC 사용을 참조하세요.

Kubernetes API에 대한 Microsoft Entra ID 권한 부여

엔트라 ID 권한 부여를 통해 AKS는 Kubernetes API 권한 부여 결정을 Microsoft Entra ID로 위임하는 권한 부여 웹후크를 배포합니다. 요청이 API 서버에 도달하면 웹후크는 Entra ID checkaccess API를 호출하여 호출자의 Azure 역할 할당(및 연결된 ABAC 조건)을 평가하고 허용 또는 거부 결정을 반환합니다.

Kubernetes API에 대한 Entra ID 권한 부여 웹후크 흐름을 보여 주는 다이어그램.

Entra ID 권한 부여는 모든 클러스터에서 Kubernetes RBAC 매니페스트를 관리하는 경우 다음과 같은 이점을 제공합니다.

  • 단일 정체성 평면. Azure 리소스에 대한 액세스를 제어하는 동일한 Microsoft Entra 사용자, 그룹 및 서비스 주체도 Kubernetes API에 대한 액세스를 제어합니다. 프로비전하거나 회전할 별도의 사용자 디렉터리가 없습니다.
  • 한 번 할당하고 여러 클러스터를 관리합니다. Azure 역할 할당은 구독, 관리 그룹 또는 리소스 그룹 범위에서 수행할 수 있습니다. 리소스 그룹 범위에서 단일 역할 할당은 해당 리소스 그룹의 모든 현재 및 향후 AKS 클러스터에 대한 액세스 권한을 부여합니다. Kubernetes RBAC를 사용하면 모든 클러스터에 매니페스트를 개별적으로 적용해야 합니다.
  • 조건부 액세스 및 PIM(Privileged Identity Management). 클러스터 액세스는 조직의 기존 Entra ID 조건부 액세스 정책(예: 다단계 인증 또는 위치 기반 제한)을 자동으로 상속하며 PIM을 통해 적시에 상승될 수 있습니다.
  • 중앙 집중식 감사. 모든 역할 할당 변경 내용은 다른 Azure 리소스 변경 내용과 함께 Azure 활동 로그에 기록되므로 클러스터 액세스 거버넌스에 대한 감사 내역이 하나 있습니다.
  • 세분화된 사용자 지정 리소스 제약 조건입니다. ABAC 조건을 사용하면 클러스터별 Kubernetes RBAC 매니페스트를 작성하지 않고 CRD(특정 사용자 지정 리소스) 그룹 및 종류에 대한 액세스를 제한할 수 있습니다.

AKS는 Entra ID 권한 부여에 다음과 같은 기본 제공 역할을 제공합니다.

역할 Description
Azure Kubernetes Service RBAC 리더 네임스페이스의 대부분의 개체에 대한 읽기 전용 액세스입니다. 역할, 역할 바인딩 또는 Secrets을(를) 볼 수 없습니다.
Azure Kubernetes Service RBAC 작성자 네임스페이스의 대부분의 개체에 대한 읽기/쓰기 권한입니다. 역할 또는 역할 바인딩을 보거나 수정할 수 없습니다.
Azure Kubernetes Service RBAC 관리자 네임스페이스의 대부분의 리소스에 대한 읽기/쓰기 액세스 및 네임스페이스 내에서 역할 및 역할 바인딩을 만드는 기능
Azure Kubernetes Service RBAC 클러스터 관리자 모든 네임스페이스에서 클러스터의 모든 리소스를 완전히 제어합니다.

사용자 지정 권한 패턴의 경우 리소스 공급자의 데이터 작업을 사용하여 Microsoft.ContainerService 특정 Kubernetes API 그룹을 대상으로 하는 사용자 지정 역할 정의를 작성할 수 있습니다. 단계별 설정 및 사용자 지정 역할 예제는 Kubernetes API에 대한 Microsoft Entra ID 권한 부여 사용을 참조하세요.

Comparison

역량 Kubernetes RBAC Entra ID 권한 부여
신원 정보 출처 Kubernetes 사용자, 그룹, 서비스 계정 Microsoft Entra ID 아이디
단일 권한 부여의 범위 하나의 클러스터 리소스, 리소스 그룹, 구독 또는 관리 그룹
다중 클러스터 거버넌스 각 클러스터에 매니페스트 적용(일반적으로 GitOps) 더 높은 범위에서 하나의 역할 할당은 많은 클러스터를 제어합니다.
조건부 액세스/PIM 지원되지 않음 Entra ID에서 상속됨
감사 추적 클러스터 감사 로그 Azure 활동 로그
CRD 그룹 또는 종류별로 액세스 필터링 CRD Role 별 개체 작성 역할 할당에 ABAC 조건 특성 사용

ABAC 조건으로 사용자 지정 리소스 액세스 제한

Microsoft Entra ID 권한 부여를 통해 광범위한 읽기 권한을 부여하지만 담당자가 읽을 수 있는 CRD(사용자 지정 리소스)를 제한하려는 경우 Azure ABAC 조건을 역할 할당에 연결합니다.

ABAC 조건이 없으면 사용자 지정 리소스에 대한 읽기 권한을 부여하려면 범위의 모든 클러스터에 있는 모든 CRD를 포함하는 와일드카드가 Microsoft.ContainerService/managedClusters/*/read필요합니다. ABAC를 사용하면 클러스터별 Kubernetes RBAC 매니페스트를 작성하지 않고 특정 CRD 그룹 및 종류에 대한 액세스를 제한하는 조건(예: 차단 templates.gatekeeper.sh 중 허용kyverno.io)을 연결할 수 있습니다.

Kubernetes API 권한 부여의 경우 다음 특성을 사용하여 API 그룹 및 종류별로 사용자 지정 리소스에 대한 액세스를 필터링할 수 있습니다.

  • Microsoft.ContainerService/managedClusters/customResources:group
  • Microsoft.ContainerService/managedClusters/customResources:kind

Azure ABAC에 대한 배경 정보는 Azure 역할 할당 조건이란?을 참조하세요. 단계별 설정은 ABAC 조건을 사용하여 사용자 지정 리소스 액세스 제한을 참조하세요.

다음 단계