Azure Arc에서 사용하도록 설정된 AKS에 대한 액세스 및 ID 옵션
적용 대상: Azure 로컬의 AKS 버전 23H2
다음과 같은 다양한 방법으로 Kubernetes 클러스터에 대한 액세스를 인증, 권한 부여, 보안 및 제어할 수 있습니다.
- Kubernetes RBAC(Kubernetes 역할 기반 액세스 제어)를 사용하면 필요한 Kubernetes 리소스에 대해서만 사용자, 그룹 및 서비스 계정에 액세스 권한을 부여할 수 있습니다.
- Azure RBAC에서 AKS 클러스터를 사용하도록 설정하면 Microsoft Entra ID 및 Azure RBAC를 사용하여 보안 및 권한 구조를 더욱 강화할 수 있습니다.
Kubernetes RBAC 및 Azure RBAC는 클러스터 액세스를 보호하고 개발자 및 운영자에게 필요한 최소 권한만 제공하는 데 도움이 됩니다.
이 문서에서는 AKS에서 권한을 인증하고 할당하는 데 도움이 되는 핵심 개념을 소개합니다.
Kubernetes RBAC
Kubernetes RBAC는 사용자 작업에 대한 세부적인 필터링을 제공합니다. 이 제어 메커니즘 사용:
- 사용자 또는 사용자 그룹 권한을 할당하여 리소스를 생성 및 수정하거나 실행 중인 애플리케이션 워크로드에서 로그를 볼 수 있습니다.
- 단일 네임스페이스 또는 전체 AKS 클러스터에 대한 권한 범위를 지정할 수 있습니다.
- 역할을 만들어 권한을 정의한 다음 역할 바인딩을 사용하여 해당 역할을 사용자에게 할당합니다.
자세한 내용은 Kubernetes RBAC 권한 부여 사용을 참조하세요.
Roles 및 ClusterRoles
역할
Kubernetes RBAC를 사용하는 사용자에게 권한을 할당하기 전에 사용자 권한을 역할로 정의합니다. 역할을 사용하여 Kubernetes 네임스페이스 내에서 권한을 부여합니다.
Kubernetes 역할은 권한을 부여합니다. 권한을 거부하지 않습니다. 전체 클러스터 또는 지정된 네임스페이스 외부의 클러스터 리소스에 대한 권한을 부여하려면 ClusterRoles를 사용할 수 있습니다.
ClusterRoles
ClusterRole은 특정 네임스페이스가 아니라 전체 클러스터에서 리소스에 권한을 부여하고 적용합니다.
RoleBindings 및 ClusterRoleBindings
리소스에 권한을 부여하는 역할을 정의한 후에는 RoleBinding을 사용하여 해당 Kubernetes RBAC 권한을 할당합니다. AKS 클러스터가 Microsoft Entra ID와 통합되는 경우 RoleBindings는 Microsoft Entra 사용자에게 클러스터 내에서 작업을 수행할 수 있는 권한을 부여합니다. Microsoft Entra ID 및 Kubernetes RBAC를 사용하여 액세스 제어 참조
RoleBindings
RoleBindings를 사용하여 지정된 네임스페이스에 대한 사용자에게 역할을 할당합니다. RoleBindings를 사용하면 단일 AKS 클러스터를 논리적으로 구분할 수 있으므로 사용자가 할당된 네임스페이스의 애플리케이션 리소스에 액세스할 수 있습니다.
전체 클러스터 또는 지정된 네임스페이스 외부의 클러스터 리소스에 역할을 바인딩하려면 ClusterRoleBindings를 사용합니다.
ClusterRoleBinding
ClusterRoleBinding을 사용하면 사용자에게 역할을 바인딩하고 특정 네임스페이스가 아니라 전체 클러스터의 리소스에 적용할 수 있습니다. 이 방법을 통해 관리자 또는 지원 엔지니어에게 AKS 클러스터의 모든 리소스에 대한 액세스 권한을 부여할 수 있습니다.
Kubernetes 서비스 계정
서비스 계정은 Kubernetes의 기본 사용자 유형 중 하나입니다. Kubernetes API는 서비스 계정을 보유하고 관리합니다. 서비스 계정 자격 증명은 Kubernetes 비밀로 저장되므로 권한 있는 Pod에서 API 서버와 통신하는 데 사용할 수 있습니다. 대부분의 API 요청은 서비스 계정 또는 일반 사용자 계정에 대한 인증 토큰을 제공합니다.
일반 사용자 계정은 서비스 및 프로세스뿐만 아니라 사용자 관리자 또는 개발자에게도 더 일반적인 액세스를 허용합니다. Kubernetes는 일반 사용자 계정 및 암호를 저장하는 ID 관리 솔루션을 제공하지 않지만 외부 ID 솔루션을 Kubernetes에 통합할 수 있습니다. AKS 클러스터의 경우 이 통합 ID 솔루션은 Microsoft Entra ID입니다.
Kubernetes의 ID 옵션에 대한 자세한 내용은 Kubernetes 인증을 참조하세요.
Azure 역할 기반 액세스 제어
Azure RBAC(역할 기반 액세스 제어)는 Azure 리소스의 세분화된 액세스 관리를 제공하는 Azure Resource Manager를 기반으로 하는 권한 부여 시스템입니다.
RBAC 시스템 | 설명 |
---|---|
Kubernetes RBAC | AKS 클러스터 내에서 Kubernetes 리소스에 대해 작동하도록 설계되었습니다. |
Azure RBAC | Azure 구독 내에서 리소스를 사용하도록 설계되었습니다. |
Azure RBAC를 사용하는 경우 적용할 사용 권한을 간략하게 설명하는 역할 정의를 만듭니다. 그런 다음 특정 범위에 대한 역할 할당을 통해 이 역할 정의를 사용자 또는 그룹에 할당합니다. 범위는 개별 리소스, 리소스 그룹 또는 구독에 걸쳐 있을 수 있습니다.
자세한 내용은 Azure RBAC(Azure 역할 기반 액세스 제어)란?과
AKS Arc 클러스터를 완전히 작동하려면 다음 두 가지 수준의 액세스가 필요합니다.
- Azure 구독에서 AKS 리소스에 액세스.
- Azure Arc API에서 사용하도록 설정된 AKS를 사용하여 클러스터 크기 조정 또는 업그레이드를 제어합니다.
- 관리자, 인증서 기반 kubeconfig를 끌어오세요.
- Entra ID를 사용하도록 설정된 kubeconfig를 끌어오세요.
- Kubernetes API에 대한 액세스. 이 액세스는 다음과 같은 방법으로 제어됩니다.
- Kubernetes RBAC 또는
- Kubernetes 인증을 위해 Azure RBAC를 AKS와 통합.
Azure RBAC로 AKS 리소스에 대한 액세스 권한 부여
Azure RBAC를 사용하면 하나 이상의 구독에서 AKS 리소스에 대한 세분화된 액세스 권한을 사용자에게 제공할 수 있습니다. 이 컨트롤 플레인 작업에 사용할 수 있는 세 가지 역할은 Azure Kubernetes Service Arc 클러스터 관리자 역할, Azure Kubernetes Service Arc 클러스터 사용자 역할 및 Azure Kubernetes Service Arc 기여자 역할입니다. 각 역할에는 컨테이너에 대한 Azure 기본 제공 역할에 설명된 대로 다른 권한 범위가 있습니다. 예를 들어 Azure Kubernetes Service Arc 기여자 역할을 사용하여 클러스터를 만들고, 확장하고, 업그레이드할 수 있습니다. 한편 Azure Kubernetes Service Arc 클러스터 관리자 역할을 가진 다른 사용자에게는 관리자 kubeconfig를 끌어올 수 있는 권한만 있습니다.
Kubernetes 권한 부여에 Azure RBAC
Azure RBAC 통합을 통해 AKS는 Kubernetes 권한 부여 웹후크 서버를 사용하여 Azure 역할 정의 및 역할 할당을 사용하여 Microsoft Entra 통합 Kubernetes 클러스터 리소스 권한 및 할당을 관리할 수 있습니다.
이 다이어그램에 표시된 것처럼 Azure RBAC 통합을 사용하는 경우 Kubernetes API에 대한 모든 요청은 Microsoft Entra 통합에 설명된 것과 동일한 인증 흐름을 따릅니다.
요청을 만드는 ID가 Microsoft Entra ID에 있는 경우 Azure 팀은 Kubernetes RBAC를 사용하여 요청에 권한을 부여합니다. ID가 Microsoft Entra ID 외부에 있는 경우(예: Kubernetes 서비스 계정) 권한 부여가 일반 Kubernetes RBAC로 연기됩니다.
이 시나리오에서는 Kubernetes 역할을 사용하는 것처럼 Azure RBAC 메커니즘과 API를 사용하여 사용자에게 기본 제공 역할을 할당하거나 사용자 지정 역할을 만듭니다.
이 기능을 사용하면 구독 간에 AKS 리소스에 대한 사용자 권한을 부여할 수 있을 뿐만 아니라 Kubernetes API 액세스를 제어하는 각 클러스터 내에 역할 및 권한도 구성할 수 있습니다. 기본 제공 역할 섹션에 설명된 대로 이 데이터 평면 작업에 사용할 수 있는 네 가지 기본 제공 역할이 있으며, 각각 고유한 권한 범위가 있습니다.
Important
역할 할당을 수행하기 전에 Kubernetes 권한 부여에 Azure RBAC를 사용하도록 설정해야 합니다. 자세한 내용 및 단계별 지침은 Kubernetes 권한 부여에 Azure RBAC 사용을 참조하세요.
기본 제공 역할
Arc에서 사용하도록 설정된 AKS는 다음과 같은 5가지 기본 제공 역할을 제공합니다. CRD 지원과 같은 몇 가지 차이점이 있는 Kubernetes 기본 제공 역할과 유사합니다. 각 Azure 기본 제공 역할에서 허용되는 전체 작업 목록을 참조하세요.
역할 | 설명 |
---|---|
Azure Arc 지원 Kubernetes 클러스터 사용자 | 클러스터 연결 기반 kubeconfig 파일을 검색하여 어디서나 클러스터를 관리할 수 있습니다. |
Azure Arc Kubernetes 뷰어 | 네임스페이스에 있는 대부분의 개체를 볼 수 있는 읽기 전용 권한을 허용합니다. 비밀에 대한 읽기 권한을 사용하면 네임스페이스의 ServiceAccount 자격 증명에 액세스할 수 있으므로 비밀 보기를 허용하지 않습니다. 이러한 자격 증명을 사용하면 해당 ServiceAccount 값(권한 에스컬레이션의 한 형태)을 통해 API에 액세스할 수 있습니다. |
Azure Arc Kubernetes 작성자 | 네임스페이스에 있는 대부분의 개체에 대해 읽기/쓰기 액세스 권한을 허용합니다. 역할 또는 역할 바인딩을 보거나 수정할 수 없습니다. 그러나 이 역할을 사용하면 비밀에 액세스하고 네임스페이스에서 ServiceAccount 값으로 Pod를 실행할 수 있으므로 네임스페이스에서 이러한 ServiceAccount 값의 API 액세스 수준을 얻는 데 사용할 수 있습니다. |
Azure Arc Kubernetes 관리자 | 관리자 액세스 권한을 허용합니다. RoleBinding을 통해 네임스페이스 내에서 부여됩니다. RoleBinding에서 사용하는 경우 네임스페이스 내에서 역할 및 역할 바인딩을 만드는 기능을 포함하여 네임스페이스의 대부분의 리소스에 대한 읽기/쓰기 액세스를 허용합니다. 이 역할은 리소스 할당량 혹은 네임스페이스 자체에 대한 쓰기 권한을 허용하지 않습니다. |
Azure Arc Kubernetes 클러스터 관리자 | "superuser" 액세스를 허용하여 모든 리소스에 대한 모든 작업을 실행할 수 있습니다. ClusterRoleBinding에서 사용하는 경우 클러스터의 모든 리소스와 모든 네임스페이스에 대한 모든 권한을 부여합니다. RoleBinding에서 사용하는 경우 네임스페이스 자체를 포함하여 역할 바인딩 네임스페이스의 모든 리소스를 완전히 제어할 수 있습니다. |
Microsoft Entra 통합
Microsoft Entra 통합을 통해 AKS 클러스터 보안을 강화합니다. 엔터프라이즈 ID 관리 환경을 기반으로 하는 Microsoft Entra ID는 핵심 디렉터리 서비스, 애플리케이션 액세스 관리 및 ID 보호를 결합하는 다중 테넌트 클라우드 기반 디렉터리 및 ID 관리 서비스입니다. Microsoft Entra ID를 사용하면 온-프레미스 ID를 AKS 클러스터에 통합하여 계정 관리 및 보안을 위한 단일 소스를 제공할 수 있습니다.
Microsoft Entra 통합 AKS 클러스터를 사용하면 네임스페이스 내 또는 클러스터 전체에서 Kubernetes 리소스에 대한 액세스 권한을 사용자 또는 그룹에 부여할 수 있습니다.
- kubectl 구성 컨텍스트를 가져오려면 az aksarc get-credentials 명령을 실행합니다.
- 사용자가 kubectl을 사용하여 AKS 클러스터와 상호 작용하면 Microsoft Entra 자격 증명으로 로그인하라는 메시지가 표시됩니다.
이 방법은 사용자 계정 관리 및 암호 자격 증명을 위한 단일 원본을 제공합니다. 사용자는 Kubernetes 클러스터 관리자가 정의한 리소스에만 액세스할 수 있습니다.
Microsoft Entra 인증은 OpenID Connect를 사용하여 AKS 클러스터에 제공됩니다. OpenID Connect는 OAuth 2.0 프로토콜을 기반으로 하는 ID 계층입니다. OpenID Connect에 대한 자세한 내용은 OpenID Connect 설명서를 참조 하세요. Kubernetes 클러스터 내에서 웹후크 토큰 인증 은 인증 토큰을 확인하는 데 사용됩니다. Webhook 토큰 인증은 AKS 클러스터의 일부로 구성 및 관리됩니다.
요약
다음 표에는 Microsoft Entra 통합을 사용할 때 사용자가 Kubernetes에 인증하는 방법에 대한 요약이 포함되어 있습니다. 모든 경우에 명령 시퀀스는 다음과 같습니다.
az login
을 실행하여 Azure에 대해 인증합니다.- Kubernetes 클러스터에 대한 자격 증명을 다운로드하려면 실행
az aksarc get-credentials
합니다.kube/config
. kubectl
명령을 실행합니다.- 첫 번째 명령은 다음 표에 설명된 대로 Kubernetes 클러스터에 인증하기 위해 브라우저 기반 인증을 트리거할 수 있습니다.
설명 | 역할 부여 필요 | 클러스터 관리자 Microsoft Entra 그룹 | 사용 시기 |
---|---|---|---|
클라이언트 인증서를 사용하여 관리자 로그인 | Azure Kubernetes Service Arc 클러스터 관리자 역할. 이 역할은 플래그와 함께 --admin 사용할 수 있습니다az aksarc get-credentials . 이 플래그는 Microsoft Entra 클러스터가 아닌 관리자 인증서를 사용자의 .kube/config에 다운로드합니다. 이것이 Azure Kubernetes 관리자 역할의 유일한 목적입니다. |
해당 없음 | 클러스터에 액세스할 수 있는 유효한 Microsoft Entra 그룹에 액세스할 수 없어 영구적으로 차단된 경우. |
수동(클러스터) RoleBindings가 있는 Microsoft Entra ID | Azure Kubernetes Service Arc 클러스터 사용자 역할. 사용자 역할은 플래그 없이 --admin 사용할 수 있습니다az aksarc get-credentials . 이것이 Azure Kubernetes Service 클러스터 사용자 역할의 유일한 용도입니다.) 결과는 Microsoft Entra ID 사용 클러스터에서 .kube/config에 빈 항목을 다운로드하여 kubectl에서 처음 사용될 때 브라우저 기반 인증을 트리거합니다. |
사용자가 클러스터 관리자 그룹에 없기 때문에 해당 권한은 클러스터 관리자가 설정한 RoleBindings 또는 ClusterRoleBindings에 의해 완전히 제어됩니다. (클러스터) RoleBindings 는 Microsoft Entra 사용자 또는 Microsoft Entra 그룹을 해당 주체로 지명합니다. 이러한 바인딩이 설정되지 않은 경우 사용자는 kubectl 명령을 제거할 수 없습니다. | 세부적인 액세스 제어를 원하는 경우 Kubernetes 권한 부여를 위해 Azure RBAC를 사용하지 않습니다. 바인딩을 설정하는 사용자는 이 표에 나열된 다른 방법 중 하나를 사용하여 로그인해야 합니다. |
클러스터 관리자 Microsoft Entra 그룹의 구성원별 Microsoft Entra ID(Azure CLI에서 플래그를 사용하여 --aad-admin-group-object-ids 설정) |
이전과 동일합니다. | 사용자는 여기에 나열된 그룹 중 하나의 멤버입니다. AKS는 나열된 모든 그룹을 cluster-admin Kubernetes 역할에 바인딩하는 ClusterRoleBinding을 자동으로 생성합니다. 따라서 이러한 그룹의 사용자는 모든 kubectl 명령을 cluster-admin 로 실행할 수 있습니다. |
사용자에게 전체 관리자 권한을 부여하고 Kubernetes 권한 부여에 Azure RBAC를 사용하지 않는 경우 |
Kubernetes 권한 부여를 위한 Azure RBAC를 사용하는 Microsoft Entra ID | 두 가지 역할: Azure Kubernetes Service Arc 클러스터 사용자 역할 (앞에서 설명한 대로). 앞에서 설명한 Azure Arc Kubernetes 역할 또는 사용자 지정 대안 중 하나입니다. |
Kubernetes 권한 부여에 대한 Azure RBAC를 사용하는 경우 구성 탭의 관리자 역할 필드는 관련이 없습니다. | Kubernetes 권한 부여를 위해 Azure RBAC를 사용합니다. 이 방법은 RoleBindings 또는 ClusterRoleBindings를 설정하지 않고도 세분화된 제어를 제공합니다. |