다음을 통해 공유


신뢰할 수 있는 액세스를 사용하여 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 클러스터에 액세스할 수 있습니다.

필수 조건

클러스터에 연결

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 .