연습 - 서비스 주체 및 키 만들기
중요
이 연습을 수행하려면 사용자의 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 환경에 액세스하도록 사용 권한을 부여할 수 있습니다.