Azure CLI를 사용하여 Azure 서비스 주체 만들기
Azure 서비스를 사용하는 자동화된 도구에는 항상 제한된 권한이 있어야 Azure 리소스의 보안을 유지할 수 있습니다. 따라서 애플리케이션을 완전히 권한 있는 사용자로 로그인하는 대신 Azure는 서비스 주체를 제공합니다. Azure 서비스 주체는 애플리케이션, 호스트된 서비스 및 자동화된 도구에서 사용하기 위해 만든 ID입니다. 이 ID는 리소스에 액세스하는 데 사용됩니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 서비스 주체 만들기
- 서비스 주체 및 암호를 사용하여 로그인
- 서비스 주체 및 인증서를 사용하여 로그인
- 서비스 주체 역할 관리
- 서비스 주체를 사용하여 Azure 리소스 만들기
- 서비스 주체 자격 증명 다시 설정
필수 조건
- 구독에서 서비스 주체를 만들려면 사용 권한 이상이
Role Based Access Control Administrator
있어야 합니다User Access Administrator
. Azure RBAC(Azure 역할 기반 액세스 제어)에 사용할 수 있는 역할 목록은 Azure 기본 제공 역할을 참조하세요.
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
서비스 주체 만들기
az ad sp create-for-rbac Azure CLI 참조 명령을 사용하여 서비스 주체를 만듭니다. 이 예제에서는 매개 변수를 --name
지정하지 않으므로 타임스탬프를 포함하는 이름이 자동으로 만들어집니다.
az ad sp create-for-rbac
출력 콘솔:
{
"appId": "myAppId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myTentantId"
}
리소스 명명 규칙을 준수하지 않고 나중에 az ad sp create-for-rbac
새 서비스 주체에 대한 역할 및 범위를 만들 계획인 경우 매개 변수가 없는 명령은 허용 가능한 솔루션입니다. 그러나 역할 및 범위가 없으면 새 서비스 주체가 리소스에 액세스할 수 없습니다. 그것은 단지 존재합니다.
매개 변수 없이 서비스 주체를 만들 때 다음 단계도 완료합니다.
- 시스템 할당 암호를 다시 검색할 수 없으므로 기록합니다. 암호를 분실한 경우 서비스 주체 자격 증명 재설정에 설명된 대로 az ad sp 자격 증명 재설정을 사용하여 재설정합니다.
- 서비스 주체 관리 역할에 설명된 대로 az role assignment create를 사용하여 새 서비스 주체에 대한 역할 할당을 설정합니다.
참고 항목
계정에 서비스 주체 az ad sp create-for-rbac
를 만들 수 있는 권한이 없는 경우 "작업을 완료할 수 있는 권한이 부족합니다"가 포함된 오류 메시지를 반환합니다. Microsoft Entra 관리자에게 문의하여 서비스 주체를 만듭니다.
사용자가 애플리케이션을 등록할 수 있는 사용자 설정이 아니요로 설정된 Microsoft Entra ID 디렉터리에서 다음 Microsoft Entra ID 기본 제공 역할(작업 microsoft.directory/applications/createAsOwner
포함) 중 microsoft.directory/applications/create
하나의 구성원이어야 합니다.
Microsoft Entra ID의 사용자 설정에 대한 자세한 내용은 애플리케이션을 만들 수 있는 사용자 제한(Restrict)을 참조 하세요.
역할 및 범위를 사용하여 서비스 주체 만들기
서비스 주체를 만들 때 항상 특정 --role
--scopes
항목을 할당하는 것이 가장 좋습니다. 다음 단계를 수행합니다.
올바른 역할을 확인합니다.
역할을 결정할 때는 항상 최소 권한 원칙을 사용합니다. 예를 들어 서비스 주체가 리소스 그룹 내의 Azure Storage에만 액세스해야 하는 경우 서비스 주체
contributor
에게 구독에 대한 권한을 부여하지 마세요. 스토리지 Blob 데이터 기여자 같은 특수한 역할을 고려합니다. Azure RBAC에서 사용 가능한 역할의 전체 목록은 Azure 기본 제공 역할을 참조 하세요.범위 매개 변수의 값을 가져옵니다.
새 서비스 주체가 액세스해야 하는 Azure 리소스의 리소스 ID 를 찾아 복사합니다. 이 정보는 일반적으로 각 리소스의 Azure Portal 속성 또는 엔드포인트 페이지에서 찾을 수 있습니다 . 다음은 일반적인
--scopes
예제이지만 실제 형식 및 값에 대한 리소스 ID를 사용합니다.범위 예시 구독 /subscriptions/mySubscriptionID
Resource group /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
가상 머신 /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
Storage 계정 파일 서비스 /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
데이터 팩터리 /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName
자세한 범위 예제는 Azure RBAC에 대한 범위 이해를 참조 하세요.
서비스 주체를 만듭니다.
이 예제에서는 리소스 그룹 RG1의 모든 리소스에 대한 읽기 권한자 권한을 사용하여 myServicePrincipalName1이라는 새 서비스 주체를 만듭니다.
# Bash script az ad sp create-for-rbac --name myServicePrincipalName1 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
매개 변수는
--scopes
공백으로 구분된 범위 목록을 허용합니다. 이 예제에서는 myServicePrincipalName2라는 새 서비스 주체가 리소스 그룹 myRG1의 모든 리소스에 대한 읽기 권한자 권한으로 만들어집니다. 이 서비스 주체에는 myRG2에 있는 myVM에 대한 판독기 권한도 부여됩니다.# Bash script az ad sp create-for-rbac --name myServicePrincipalName2 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
새 서비스 주체에 너무 적거나 너무 많은 권한을 부여한 경우 서비스 주체 역할을 관리하여 권한을 변경합니다.
변수를 사용하여 서비스 주체 만들기
변수를 사용하여 서비스 주체를 만들 수도 있습니다.
# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"
echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
--role $roleName \
--scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup
서비스 주체 속성의 전체 목록은 az ad sp list를 사용하고 기존 서비스 주체 가져오기를 참조 하세요.
Warning
명령을 사용하여 Azure 서비스 주체를 az ad sp create-for-rbac
만들 때 출력에는 보호해야 하는 자격 증명이 포함됩니다. 이러한 자격 증명을 코드에 포함하지 않도록 하거나 소스 제어에 자격 증명을 확인해야 합니다. 또는 자격 증명을 사용할 필요가 없도록 사용할 수 있는 경우 관리 ID를 사용하는 것이 좋습니다.
다음 단계
이제 Azure 서비스 주체를 만드는 방법을 배웠으므로 다음 단계를 진행하여 암호 기반 인증으로 서비스 주체를 사용하는 방법을 알아봅니다.
Azure CLI