다음을 통해 공유


PIM(Privileged Identity Management)을 사용하여 AKS(Azure Kubernetes Service) 클러스터에 대한 액세스를 제어합니다.

다른 팀에 대한 사용 권한을 설정할 때 지정된 팀에 대한 기본 권한을 설정한 다음 필요한 경우 특정 사용자에게 권한 있는 액세스 권한을 부여할 수 있습니다. AKS(Azure Kubernetes Service)를 Microsoft Entra ID와 함께 사용하면 JIT(Just-In-Time) 요청에 대해 PIM(Privileged Identity Management)을 설정할 수 있습니다.

이 문서에서는 다음 방법을 설명합니다.

  • Microsoft Entra 그룹 멤버 자격에 따라 AKS 클러스터에 액세스하거나 작업을 수행하는 예제 그룹에 대한 기본 역할을 설정합니다.
  • AKS 클러스터에 액세스하기 위한 기본 역할을 구성합니다.
  • 역할을 자체 활성화하여 AKS 클러스터에 대한 Just-In-Time 액세스를 가져옵니다.
  • Just-In-Time 액세스에 대한 승인 요청을 승인하거나 거부하도록 승인자를 설정합니다.

참고 항목

Microsoft Entra PIM(Privileged Identity Management)에는 프리미엄 P2 SKU가 필요한 Microsoft Entra ID P2 또는 Microsoft Entra ID 거버넌스 기능이 있습니다. 자세한 내용은 Microsoft Entra ID 거버넌스 라이선스 기본 사항 및 가격 책정 가이드 참조하세요.

필수 조건

이 문서에서는 Microsoft Entra ID가 통합된 기존 AKS 클러스터가 있다고 가정합니다. 없는 경우 Microsoft Entra ID 통합을 사용하여 AKS 클러스터 만들기를 참조하세요.

Microsoft Entra ID에서 데모 그룹 만들기

이 섹션에서는 Microsoft Entra ID로 세 개의 그룹을 만듭니다.

  • 기본값: 이 그룹에는 AKS 클러스터의 리소스에 대한 읽기 전용 액세스(Azure Kubernetes Service RBAC Reader)가 있습니다.
  • 관리자: 이 그룹에는 AKS 클러스터의 리소스에 대한 관리자 액세스(Azure Kubernetes Service RBAC Admin)가 있습니다.
  • 승인자: 이 그룹에는 AKS 클러스터에 대한 Just-In-Time 액세스에 대한 요청을 승인하거나 거부할 수 있는 권한이 있습니다.

별도의 승인자 그룹을 만드는 대신 기본관리 그룹만 사용할 수 있습니다. 그러나 관리 그룹에 승인 권한을 포함하는 경우 Just-In-Time 액세스를 받는 멤버는 자신의 요청 및 다른 사용자의 요청을 승인할 수 있습니다. 프로덕션 환경에서는 이 구성을 사용하지 않는 것이 좋지만 테스트 목적으로 유용합니다.

기본 그룹 만들기

  1. 명령을 사용하여 AKS 클러스터의 리소스 ID를 가져옵니다az aks show.

    AKS_ID=$(az aks show \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --query id \
        --output tsv)
    
  2. 명령을 사용하여 AKS 클러스터의 리소스 그룹 ID를 가져옵니다az group show.

    RG_ID=$(az group show \
        --resource-group <resource-group-name> \
        --query id \
        --output tsv)
    
  3. 명령을 사용하여 기본 그룹을 만듭니다az ad group create.

    DEFAULT_ID=$(az ad group create \
        --display-name default \
        --mail-nickname default \
        --query id \
        --output tsv)
    
  4. 명령을 사용하여 기본 그룹에 대한 Azure 역할 할당을 만듭니다az role assignment create.

    특정 요구 사항에 따라 기본 그룹에 할당할 수 있는 세 가지 역할이 있습니다.

    • Azure Kubernetes Service RBAC Reader: AKS 클러스터의 범위에서 할당되며 클러스터의 대부분의 리소스에 대한 기본 읽기 전용 액세스를 제공합니다.
    • Reader: 리소스 그룹의 범위에서 할당되며 리소스 그룹의 리소스에 대한 읽기 전용 액세스를 제공합니다.
    • Azure Kubernetes Service Cluster User Role: AKS 클러스터의 범위에서 할당되며 AKS 클러스터에 대한 kubeconfig 컨텍스트를 가져올 수 있는 액세스 권한을 부여합니다.
    # Assign the Azure Kubernetes Service RBAC Reader role to the default group
    az role assignment create \
        --role "Azure Kubernetes Service RBAC Reader" \
        --assignee $DEFAULT_ID \
        --scope $AKS_ID
    
    # Assign the Reader role to the default group
    az role assignment create \
        --role "Reader" \
        --assignee $DEFAULT_ID \
        --scope $RG_ID
    
    # Assign the Azure Kubernetes Service Cluster User Role to the default group
    az role assignment create \
        --role "Azure Kubernetes Service Cluster User Role" \
        --assignee $DEFAULT_ID \
        --scope $AKS_ID
    

관리 그룹 만들기

  1. 명령을 사용하여 관리 그룹을 만듭니다az ad group create.

    ADMIN_ID=$(az ad group create \
        --display-name admin \
        --mail-nickname admin \
        --query id \
        --output tsv)
    
  2. Azure Kubernetes Service RBAC Admin 명령을 사용하여 관리 그룹에 역할을 할당합니다az role assignment create.

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Admin" \
        --assignee $ADMIN_ID \
        --scope $AKS_ID
    

참고 항목

관리 그룹의 사용자가 수동 크기 조정과 같은 노드 풀 설정을 변경하도록 하려면 다음 명령을 사용하여 클러스터 노드 풀에 역할 할당을 만들어야 Contributor 합니다.

az role assignment create \
   --role "Contributor" \
   --assignee $ADMIN_ID \
   --scope $AKS_ID/nodepools/<node-pool-name>

이는 AKS 리소스에서 규모 감축 또는 축소할 수 있는 권한만 부여한다는 사실에 유의하세요. Virtual Machine Scale Set 리소스에서 스케일 인 또는 스케일 아웃을 허용하려면 Virtual Machine Scale Set 수준에서 할당을 만들어야 합니다.

승인자 그룹 만들기

  • 명령을 사용하여 승인자 그룹을 만듭니다az ad group create.

    APPROVER_ID=$(az ad group create \
        --display-name approver \
        --mail-nickname approver \
        --query id \
        --output tsv)
    

Microsoft Entra ID에서 데모 사용자 만들기

이 섹션에서는 Microsoft Entra ID에 기본 역할만 있는 일반 사용자와 일반 사용자의 Just-In-Time 요청을 승인하거나 거부할 수 있는 권한 있는 사용자라는 두 명의 사용자를 만듭니다.

  1. 명령을 사용하여 일반 사용자를 만듭니다az ad user create.

    DOMAIN=contoso.com
    PASSWORD=Password1
    
    NUSER_ID=$(az ad user create \
        --display-name n01 \
        --password ${PASSWORD} \
        --user-principal-name n01@${DOMAIN} \
        --query id \
        --output tsv)
    
  2. 명령을 사용하여 기본 그룹에 일반 사용자를 추가합니다az ad group member add.

    az ad group member add \
        --group $DEFAULT_ID \
        --member-id $NUSER_ID
    
  3. 명령을 사용하여 권한 있는 사용자를 만듭니다az ad user create.

    PUSER_ID=$(az ad user create \
        --display-name p01 \
        --password ${PASSWORD} \
        --user-principal-name p01@${DOMAIN} \
        --query id \
        --output tsv)
    
  4. 명령을 사용하여 권한 있는 사용자를 승인자 그룹에 추가합니다az ad group member add.

    az ad group member add \
        --group $APPROVER_ID \
        --member-id $PUSER_ID
    

관리 그룹에 대해 PIM(Privileged Identity Management) 사용

  1. Azure Portal 홈페이지에서 Microsoft Entra ID를 선택합니다.
  2. 서비스 메뉴의 관리 아래에서 그룹을 선택한 다음 관리 그룹을 선택합니다.
  3. 서비스 메뉴의 작업에서 Privileged Identity Management를 선택한 다음, 이 그룹에 대해 PIM 사용을 선택합니다.

관리 그룹에 대한 승인자 설정

  1. Azure Portal 홈페이지에서 Privileged Identity Management를 검색하여 선택합니다.

  2. 서비스 메뉴의 관리 아래에서 그룹을 선택한 다음 관리 그룹을 선택합니다.

  3. 서비스 메뉴의 관리 아래에서 할당 추가 할당을> 선택합니다.

  4. 할당 추가 페이지의 멤버 자격에서 선택한 역할로 멤버를 선택하고 선택한 멤버로 기본값을 선택한 다음, 다음을 선택합니다.

  5. 설정 탭에서 할당 유형으로 적격을 선택한 다음 할당을 선택합니다.

  6. 서비스 메뉴의 관리에서 설정>멤버>편집을 선택합니다.

  7. 역할 편집 설정 - 구성원 페이지에서 승인 필요 확인란을 선택하고 승인자 그룹을 선택한 승인자로 추가합니다.

    참고 항목

    승인 필요 확인란을 선택하지 않으면 기본 그룹의 사용자가 역할을 자체 활성화하여 승인 없이 AKS 클러스터에 대한 Just-In-Time 액세스를 가져올 수 있습니다. 승인자 그룹의 사용자는 그룹의 구성원이어야 합니다. 사용자를 소유자로 설정하더라도 그룹 소유자는 역할 할당이 아닌 그룹에 대한 관리 권한만 있기 때문에 Just-In-Time 요청을 검토할 수 없습니다. 충돌 없이 사용자를 동일한 그룹의 구성원 및 소유자로 설정할 수 있습니다.

  8. 필요한 다른 변경 내용을 적용한 다음 업데이트를 선택합니다.

PIM 구성에 대한 자세한 내용은 그룹에 대한 PIM 구성을 참조 하세요.

기본 역할을 사용하여 클러스터 리소스와 상호 작용

이제 기본 그룹의 멤버인 일반 사용자를 사용하여 AKS 클러스터에 액세스하려고 할 수 있습니다.

  1. 명령을 사용하여 일반 사용자로 Azure Portal에 로그인합니다az login.

    az login --username n01@$DOMAIN --password ${PASSWORD}
    
  2. az aks get-credentials 명령을 사용하여 클러스터에 액세스하는 데 사용할 사용자 자격 증명을 가져오려면 다음을 수행합니다.

    az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>
    
  3. 명령을 사용하여 클러스터 Pod에 kubectl get 액세스합니다.

    kubectl get pods --namespace kube-system
    

    출력은 네임스페이스의 Pod를 보여주는 다음 예제 출력과 kube-system 유사해야 합니다.

    NAME                                   READY   STATUS    RESTARTS   AGE
    azure-ip-masq-agent-2rdd9              1/1     Running   0          30h
    azure-policy-767c9d9d9d-886rf          1/1     Running   0          31h
    cloud-node-manager-92t6h               1/1     Running   0          30h
    coredns-789789675-b2dhg                1/1     Running   0          31h
    coredns-autoscaler-77bbc46446-pgt92    1/1     Running   0          31h
    csi-azuredisk-node-lnzrf               3/3     Running   0          30h
    csi-azurefile-node-lhbxr               3/3     Running   0          31h
    konnectivity-agent-7645d94b-9wqct      1/1     Running   0          30h
    kube-proxy-lkx4w                       1/1     Running   0          31h
    metrics-server-5955767688-lpbjb        2/2     Running   0          30h
    
  4. 명령을 사용하여 클러스터 비밀에 액세스합니다 kubectl get .

    kubectl get secrets --namespace kube-system
    

    출력은 사용자에게 비밀에 액세스할 수 있는 권한이 없기 때문에 오류 메시지를 보여 주는 다음 예제 출력과 유사해야 합니다.

    Error from server (Forbidden): secrets is forbidden: User "[email protected]" cannot list resource "secrets" in API group "" in the namespace "kube-system": User does not have access to the resource in Azure. Update role assignment to allow access.
    

    역할에 비밀 Azure Kubernetes Service RBAC Reader 에 액세스할 수 있는 권한이 없으므로 이 오류가 예상됩니다.

AKS 클러스터에 대한 Just-In-Time 액세스 요청

이번에는 Privileged Identity Management에서 그룹 멤버 자격 또는 소유권 활성화의 단계를 사용하여 임시 Azure Kubernetes Service RBAC Admin 로 Just-In-Time 액세스를 요청할 수 있습니다. 승인자로 요청을 승인하거나 거부하는 방법을 알아보려면 그룹 구성원 및 소유자에 대한 활성화 요청 승인을 참조하세요.

관리자 역할을 사용하여 클러스터 리소스와 상호 작용

역할을 일시적으로 추가한 Azure Kubernetes Service RBAC Admin 후 관리자 권한이 필요한 클러스터 리소스에 액세스할 수 있습니다.

  1. 다음 kubelogin 명령을 사용하여 기존 저장된 토큰을 제거합니다.

    kubelogin remove-tokens
    

    참고 항목

    권한 부족으로 인해 오류가 발생하면 로그인하여 명령을 사용하여 az login 사용 권한을 새로 고칩니다.

  2. 명령을 사용하여 클러스터 비밀에 다시 액세스합니다 kubectl get secrets .

    kubectl get secrets --namespace kube-system
    

    출력은 네임스페이스의 비밀을 보여주는 다음 예제 출력과 kube-system 유사해야 합니다.

    NAME                     TYPE                            DATA   AGE
    bootstrap-token-sw3rck   bootstrap.kubernetes.io/token   4      35h
    konnectivity-certs       Opaque                          3      35h
    

    이제 사용자는 역할이 있으므로 비밀에 Azure Kubernetes Service RBAC Admin 액세스할 수 있습니다.

토큰 수명 고려 사항

토큰 수명 디자인으로 인해 CLI 도구(예kubectl: 또는kubelogin)를 사용하는 사용자에게 역할을 부여하는 경우 기술적으로 활성화 기간은 60분 이내가 될 수 없습니다. 기간이 60분 미만으로 설정되더라도 실제 유효 기간은 60-75분 사이로 유지됩니다.

kubelogin Microsoft ID 플랫폼access_token refresh_token 토큰을 가져오려고 하면 추가 사용을 위해 반환됩니다. API access_token 에 대한 요청을 수행하고 현재 API가 만료되면 새 access_token API refresh_token 를 가져오는 데 사용됩니다. 생성된 후에는 access_token 해지할 수 없지만 refresh_token 취소할 수 있습니다. 해지 refresh_token 된 경우 사용자는 새 refresh_token항목을 가져오기 위해 다시 인증해야 합니다. 수동으로 해지하려면 .를 refresh_token사용할 Revoke-AzureADUserAllRefreshToken수 있습니다.

다음 단계

자세한 내용은 다음 문서를 참조하세요.