신뢰할 수 있는 액세스를 사용하여 Azure Kubernetes Service에서 Azure 리소스에 대한 보안 액세스 권한 가져오기
이 문서에서는 신뢰할 수 있는 액세스를 사용하여 AKS(Azure Kubernetes Service)의 Kubernetes API 서버에 대한 Azure 서비스에 대한 보안 액세스를 가져오는 방법을 보여 줍니다.
신뢰할 수 있는 액세스 기능은 프라이빗 엔드포인트 없이 Azure 백 엔드를 사용하여 AKS API 서버에 대한 보안 액세스를 서비스에 제공합니다. 이 기능은 Microsoft Entra 권한이 있는 ID를 사용하는 대신 시스템이 할당한 관리 ID를 사용하여 AKS 클러스터에서 이용하려는 관리되는 서비스와 애플리케이션을 인증합니다.
참고 항목
신뢰할 수 있는 액세스 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 클러스터에 액세스할 수 있습니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 시스템이 할당한 관리 ID를 지원하는 리소스 종류입니다.
- Azure CLI, 버전 2.53.0 이상
az --version
를 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요. - 다양한 시나리오에서 사용할 역할을 알아보려면 다음 문서를 참조하세요.
- AzureML access to AKS clusters with special configurations(특수 구성을 사용하는 AKS 클러스터에 대한 Azure Machine Learning 액세스)
- Azure Kubernetes Service 백업이란?
- 에이전트 없는 컨테이너 상태 활성화
- 클러스터에 액세스하려는 Azure 리소스와 동일한 구독에서 AKS 클러스터를 만듭니다.
클러스터에 연결
az aks get-credentials
명령을 사용하여 클러스터에 연결하도록 kubectl
을 구성합니다.
export RESOURCE_GROUP_NAME="myResourceGroup"
export CLUSTER_NAME="myClusterName"
az aks get-credentials --resource-group ${RESOURCE_GROUP_NAME} --name ${CLUSTER_NAME} --overwrite-existing
kubectl get
명령을 사용하여 클러스터에 대한 연결을 확인합니다.
kubectl get nodes
신뢰할 수 있는 액세스에 필요한 역할 선택
선택하는 역할은 AKS 클러스터에 액세스하려는 Azure 서비스에 따라 달라집니다. Azure 서비스는 Azure 서비스에서 AKS로 이어지는 연결을 빌드하는 역할과 역할 바인딩을 만드는 데 도움이 됩니다.
필요한 역할을 찾으려면 AKS에 연결하려는 Azure 서비스에 대한 설명서를 참조하세요. Azure CLI를 사용하여 명령을 사용하여 az aks trustedaccess role list --location <location>
Azure 서비스에 사용할 수 있는 역할을 나열할 수도 있습니다.
신뢰할 수 있는 액세스 역할 바인딩 만들기
사용할 역할을 확인한 후 Azure CLI를 사용하여 AKS 클러스터에서 신뢰할 수 있는 액세스 역할 바인딩을 만듭니다. 역할 바인딩은 선택한 역할을 Azure 서비스와 연결해 줍니다.
export ROLE_BINDING_NAME="myRoleBindingName"
export SOURCE_RESOURCE_ID="mySourceResourceID"
export ROLE_NAME_1="myRoleName1"
export ROLE_NAME_2="myRoleName2"
az aks trustedaccess rolebinding create --resource-group ${RESOURCE_GROUP_NAME} --cluster-name ${CLUSTER_NAME} --name ${ROLE_BINDING_NAME} --source-resource-id ${SOURCE_RESOURCE_ID} --roles ${ROLE_NAME_1},${ROLE_NAME_2}
Results:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/${RESOURCE_GROUP_NAME}/providers/Microsoft.ContainerService/managedClusters/${CLUSTER_NAME}/trustedAccessRoleBindings/${ROLE_BINDING_NAME}",
"name": "${ROLE_BINDING_NAME}",
"provisioningState": "Succeeded",
"resourceGroup": "${RESOURCE_GROUP_NAME}",
"roles": [
"${ROLE_NAME_1}",
"${ROLE_NAME_2}"
],
"sourceResourceId": "${SOURCE_RESOURCE_ID}",
"systemData": null,
"type": "Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings"
}
기존의 신뢰할 수 있는 액세스 역할 바인딩 업데이트
연결된 원본 서비스가 있는 기존 역할 바인딩의 경우 명령을 사용하여 역할 바인딩을 새 역할로 업데이트할 az aks trustedaccess rolebinding update --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --roles $ROLE_NAME_3,$ROLE_NAME_4
수 있습니다. 이 명령은 지정한 새 역할로 역할 바인딩을 업데이트합니다.
참고 항목
추가 항목 관리자는 5분마다 클러스터를 업데이트하므로 새 역할 바인딩을 적용하는 데 최대 5분이 걸릴 수 있습니다. 새 역할 바인딩이 적용되기 전에는 기존 역할 바인딩이 계속 작동합니다.
az aks trusted access rolebinding list
명령을 사용하여 현재 역할 바인딩을 확인할 수 있습니다.
신뢰할 수 있는 액세스 역할 바인딩 표시
명령을 사용하여 특정 신뢰할 수 있는 액세스 역할 바인딩을 표시합니다 az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
.
클러스터에서 신뢰할 수 있는 역할 바인딩 모두 나열
명령을 사용하여 클러스터에 대한 신뢰할 수 있는 액세스 역할 바인딩을 모두 나열합니다 az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
.
관련 콘텐츠
Azure Kubernetes Service