신뢰할 수 있는 액세스를 사용하여 Azure Kubernetes Service에서 Azure 리소스에 대한 보안 액세스 가져오기

AKS(Azure Kubernetes Service)와 통합되는 많은 Azure 서비스를 사용하려면 Kubernetes API 서버에 액세스해야 합니다. 이러한 서비스 관리자 액세스 권한을 부여하거나 네트워크에 액세스하기 위해 AKS 클러스터를 공용으로 설정하지 않으려면, AKS 신뢰할 수 있는 액세스 기능을 사용하면 됩니다.

이 기능은 프라이빗 엔드포인트 없이 Azure 백 엔드를 사용하여 AKS API 서버에 대한 보안 액세스를 서비스에 제공합니다. 이 기능은 Microsoft Entra 권한이 있는 ID를 사용하는 대신 시스템이 할당한 관리 ID를 사용하여 AKS 클러스터에서 이용하려는 관리되는 서비스와 애플리케이션을 인증합니다.

이 문서에서는 신뢰할 수 있는 액세스를 사용하여 AKS의 Kubernetes API 서버에서 Azure 서비스에 대한 보안 액세스를 가져오는 방법을 보여 줍니다.

참고 항목

신뢰할 수 있는 액세스 API는 일반 공급됩니다. Azure CLI에 대한 GA(일반 공급) 지원을 제공하지만 아직 미리 보기 상태이며 aks-preview 확장을 사용해야 합니다.

신뢰할 수 있는 액세스 기능 개요

신뢰할 수 있는 액세스에서는 다음 시나리오를 다룹니다.

  • 권한 있는 IP 범위가 설정되거나 프라이빗 클러스터에 있는 경우, 프라이빗 엔드포인트 액세스 모델을 구현하지 않으면 Azure 서비스에서 Kubernetes API 서버에 액세스하지 못할 수도 있습니다.

  • Azure 서비스 관리자에게 Kubernetes API에 대한 액세스 권한을 부여할 때 최소 권한 액세스 모범 사례를 따르지 않으면 권한 상승 또는 자격 증명 유출 위험이 발생할 수 있습니다. 예를 들어 높은 권한의 서비스 대 서비스 권한을 구현해야 할 수도 있는데, 이는 감사 검토에 적합하지 않습니다.

신뢰할 수 있는 액세스를 사용하여 역할 바인딩이라는 Azure 리소스를 사용하면 AKS 클러스터에 액세스하도록 허용된 리소스의 시스템이 할당한 관리 ID에 명시적으로 동의하게 될 수 있습니다. Azure 리소스는 시스템이 할당한 관리 ID 인증을 사용하여 AKS 지역 게이트웨이를 통해 AKS 클러스터에 액세스합니다. 적절한 Kubernetes 권한은 역할이라는 Azure 리소스를 통해 할당됩니다. 신뢰할 수 있는 액세스를 통해 프라이빗 클러스터, 로컬 계정이 비활성화된 클러스터, Microsoft Entra 클러스터, 권한 있는 IP 범위 클러스터를 포함하나 이에 국한되지 않는 다양한 구성으로 AKS 클러스터에 액세스할 수 있습니다.

필수 조건

AKS 클러스터 만들기

클러스터에 액세스하려는 Azure 리소스와 동일한 구독에서 AKS 클러스터를 만듭니다.

신뢰할 수 있는 액세스에 필요한 역할 선택

선택하는 역할은 AKS 클러스터에 액세스하려는 Azure 서비스에 따라 달라집니다. Azure 서비스는 Azure 서비스에서 AKS로 이어지는 연결을 빌드하는 역할과 역할 바인딩을 만드는 데 도움이 됩니다.

신뢰할 수 있는 액세스 역할 바인딩 만들기

사용할 역할을 확인한 후 Azure CLI를 사용하여 AKS 클러스터에서 신뢰할 수 있는 액세스 역할 바인딩을 만듭니다. 역할 바인딩은 선택한 역할을 Azure 서비스와 연결해 줍니다.

# Create a Trusted Access role binding in an AKS cluster

az aks trustedaccess rolebinding create  --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <role binding name> -s <connected service resource ID> --roles <roleName1, roleName2>

예를 들면 다음과 같습니다.

# Sample command

az aks trustedaccess rolebinding create \
-g myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--source-resource-id /subscriptions/000-000-000-000-000/resourceGroups/myResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/MyMachineLearning \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin

기존의 신뢰할 수 있는 액세스 역할 바인딩 업데이트

연결된 원본 서비스가 있는 기존 역할 바인딩의 경우, 새 역할로 역할 바인딩을 업데이트할 수 있습니다.

참고 항목

추가 항목 관리자는 5분마다 클러스터를 업데이트하므로 새 역할 바인딩을 적용하는 데 최대 5분이 걸릴 수 있습니다. 새 역할 바인딩이 적용되기 전에는 기존 역할 바인딩이 계속 작동합니다.

az aks trusted access rolebinding list --name <role binding name> --resource-group <resource group>을 사용하면 현재 역할 바인딩을 확인할 수 있습니다.

# Update the RoleBinding command

az aks trustedaccess rolebinding update --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <existing role binding name>  --roles <newRoleName1, newRoleName2>

예를 들면 다음과 같습니다.

# Update the RoleBinding command with sample resource group, cluster, and roles

az aks trustedaccess rolebinding update \
--resource-group myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin

신뢰할 수 있는 액세스 역할 바인딩 표시

az aks trustedaccess rolebinding show 명령을 사용하여 특정한 신뢰할 수 있는 액세스 역할 바인딩을 표시합니다.

az aks trustedaccess rolebinding show --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>

클러스터에서 신뢰할 수 있는 역할 바인딩 모두 나열

az aks trustedaccess rolebinding list 명령을 사용하여 클러스터에서 신뢰할 수 있는 액세스 역할 바인딩을 모두 나열합니다.

az aks trustedaccess rolebinding list --resource-group <AKS resource group> --cluster-name <AKS cluster name>

클러스터에서 신뢰할 수 있는 액세스 역할 바인딩 삭제

Warning

기존의 신뢰할 수 있는 액세스 역할 바인딩을 삭제하면 AKS 클러스터에서 Azure 서비스의 연결이 끊어집니다.

az aks trustedaccess rolebinding delete 명령을 사용하여 기존의 신뢰할 수 있는 액세스 역할 바인딩을 삭제합니다.

az aks trustedaccess rolebinding delete --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>