연습 - 서비스 주체 및 키 만들기
중요
이 연습을 수행하려면 사용자의 Azure 구독이 필요하며 요금이 발생할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
장난감 회사의 웹 사이트에 대한 배포 파이프라인을 만들기 전에 서비스 주체를 만들고 Azure 환경에 대한 액세스 권한을 부여해야 합니다. 이 연습에서는 배포 파이프라인에 사용할 서비스 주체를 만듭니다.
프로세스 중에 다음을 수행합니다.
- 단일 작업으로 애플리케이션, 서비스 주체 및 키를 만듭니다.
- 키를 안전하게 처리합니다.
- 자격 증명을 통해 Azure에 로그인하여 서비스 주체가 작동하는지 확인합니다.
이 연습을 수행하려면 Microsoft Entra 디렉터리에 애플리케이션 및 서비스 주체를 만들 수 있는 권한이 필요합니다. 현재 Azure 계정으로 이 요구 사항을 충족할 수 없는 경우 평가판을 통해 새 Azure 구독 및 테넌트를 만들 수 있습니다. 또는 이 연습을 건너뛸 수 있습니다.
Azure에 로그인
Azure에서 서비스 주체를 사용하려면, Visual Studio Code 터미널에서 Azure 계정에 로그인해야 합니다.
터미널 메뉴에서 새 터미널을 선택합니다. 터미널 창은 일반적으로 화면의 아래쪽 절반에서 열립니다.
기본 셸은 일반적으로 터미널 창 오른쪽에 표시된 대로 pwsh입니다.
프로필 시작 드롭다운 목록을 선택한 다음 Azure Cloud Shell(Bash)을 선택합니다.
새로운 셸이 열립니다.
Azure CLI를 사용하여 Azure에 로그인
Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.
az login
열리는 브라우저에서 Azure 계정에 로그인합니다.
이 템플릿을 Azure에 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인합니다.
터미널 메뉴에서 새 터미널을 선택합니다. 터미널 창은 일반적으로 화면의 아래쪽 절반에서 열립니다.
기본 셸은 일반적으로 터미널 창 오른쪽에 표시된 대로 pwsh입니다.
프로필 시작 드롭다운 목록을 선택한 다음 Azure Cloud Shell(PowerShell)을 선택합니다.
새로운 셸이 열립니다.
Azure PowerShell을 사용하여 Azure에 로그인
Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.
Connect-AzAccount
열리는 브라우저에서 Azure 계정에 로그인합니다.
서비스 주체 및 키 만들기
Visual Studio Code 터미널에서 이 Azure CLI 명령을 실행하여 서비스 주체를 만듭니다.
az ad sp create-for-rbac --name ToyWebsitePipeline
Azure CLI에서 다른 애플리케이션의 표시 이름이 동일하다는 오류가 표시되는 경우 Microsoft Entra 테넌트를 사용하는 다른 사용자가 동일한 이름의 서비스 주체를 만들었음을 의미합니다.
--name
값을 고유한 값으로 변경합니다. 이는 나머지 연습을 수행하는 방법에는 영향을 주지 않습니다.이전 명령의 JSON 출력을 살펴보세요. 다음과 같은 속성이 포함됩니다.
appId
: 서비스 주체의 애플리케이션 ID입니다.password
: 서비스 주체의 키입니다.tenant
: Microsoft Entra 테넌트 ID입니다.
이러한 값을 안전한 곳에 복사하세요. 곧 사용하게 될 것입니다.
Visual Studio Code 터미널에서 다음 Azure PowerShell 명령을 실행하여 서비스 주체를 만듭니다.
$servicePrincipal = New-AzADServicePrincipal ` -DisplayName ToyWebsitePipeline
다음 명령을 실행하여 서비스 주체의 키를 가져옵니다.
$servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
다음 명령을 실행하여 서비스 주체의 애플리케이션 ID, 키 및 Microsoft Entra 테넌트 ID를 표시합니다.
Write-Output "Service principal application ID: $($servicePrincipal.AppId)" Write-Output "Service principal key: $servicePrincipalKey" Write-Output "Your Azure AD tenant ID: $((Get-AzContext).Tenant.Id)"
값을 안전한 곳에 복사하세요. 곧 사용하게 될 것입니다.
경고
이전 명령의 출력에는 서비스 주체에 대한 키가 포함됩니다. 이러한 명령을 실행하는 위치에 주의해야 합니다. 예를 들어 다른 사람이 볼 수 있는 환경에서는 실행하지 마세요.
서비스 주체를 테스트합니다.
이제 서비스 주체가 만들어졌으므로 자격 증명을 통해 로그인하여 성공적으로 생성되었는지 확인합니다.
Visual Studio Code 터미널에서 이 Azure CLI 명령을 실행하여 서비스 주체의 자격 증명으로 로그인합니다. 자리 표시자를 이전 단계에서 복사한 값으로 바꿉니다.
az login --service-principal \ --username APPLICATION_ID \ --password PASSWORD \ --tenant TENANT_ID \ --allow-no-subscriptions
--allow-no-subscriptions
인수를 포함해야 합니다. 일반적으로az login
명령을 실행하면 Azure CLI는 액세스할 수 있는 Azure 구독을 찾습니다. 서비스 주체에게 아직 액세스 권한이 부여되지 않았으므로--allow-no-subscriptions
인수를 사용하여 Azure CLI가 구독 목록을 확인하거나 오류를 표시하지 않도록 합니다.이전 명령의 출력이 서비스 주체의 애플리케이션 ID가 있는
user
속성을 포함하는 JSON 개체인지 확인합니다. 이 정보는 서비스 주체가 성공적으로 로그인했음을 나타냅니다.다음 명령을 사용하여 서비스 주체의 계정에서 로그아웃합니다.
az logout
Visual Studio Code 터미널에서 이 Azure PowerShell 명령을 실행하여 서비스 주체의 자격 증명에 대한 메시지를 안전하게 표시합니다. 사용자 이름 및 암호에 대해 이전 단계의 서비스 주체 애플리케이션 ID와 키를 각각 사용합니다.
$credential = Get-Credential
Visual Studio Code 터미널에서 이 Azure PowerShell 명령을 실행하여 서비스 주체의 자격 증명을 통해 로그인합니다.
Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
이전 명령의 출력에 서비스 주체의 애플리케이션 ID가 있는
Account
속성과 빈SubscriptionName
값이 포함되어 있는지 확인합니다. 이 정보는 서비스 주체가 성공적으로 로그인했음을 나타냅니다.다음 명령을 사용하여 서비스 주체의 계정에서 로그아웃합니다.
Logout-AzAccount
이제 작동하는 서비스 주체가 생겼으므로 다음 단계로 이동하여 Azure 환경에 액세스하도록 사용 권한을 부여할 수 있습니다.