연습 - 서비스 주체 및 키 만들기

완료됨

중요

이 연습을 수행하려면 사용자의 Azure 구독이 필요하며 요금이 발생할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

토이 회사의 웹 사이트에 대한 배포 파이프라인을 만들기 전에 서비스 주체를 만들고 Azure 환경에 대한 액세스 권한을 부여해야 합니다. 이 연습에서는 배포 파이프라인에 사용할 서비스 주체를 만듭니다.

프로세스 중에 다음을 수행합니다.

  • 단일 작업으로 애플리케이션, 서비스 주체 및 키를 만듭니다.
  • 키를 안전하게 처리합니다.
  • 자격 증명을 통해 Azure에 로그인하여 서비스 주체가 작동하는지 확인합니다.

이 연습을 수행하려면 Microsoft Entra 디렉터리에 애플리케이션 및 서비스 주체를 만들 수 있는 권한이 필요합니다. 현재 Azure 계정으로 이 요구 사항을 충족할 수 없는 경우 평가판을 통해 새 Azure 구독 및 테넌트를 만들 수 있습니다. 또는 이 연습을 건너뛸 수 있습니다.

Azure에 로그인

Azure에서 서비스 주체를 사용하려면, Visual Studio Code 터미널에서 Azure 계정에 로그인해야 합니다.

  1. 터미널 메뉴에서 새 터미널을 선택합니다. 터미널 창은 일반적으로 화면의 아래쪽 절반에서 열립니다.

  2. 기본 셸은 일반적으로 터미널 창의 오른쪽에 표시된 대로 pwsh입니다.

    Screenshot of the Visual Studio Code terminal window, with p w s h shown as the shell option.

  3. 셸 드롭다운을 선택한 다음, Azure Cloud Shell(bash)을 선택합니다.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Azure Cloud Shell (bash) selected.

  4. 새 셸이 열립니다.

Azure CLI를 사용하여 Azure에 로그인

  1. Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.

    az login
    
  2. 열리는 브라우저에서 Azure 계정에 로그인합니다.

이 템플릿을 Azure에 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인합니다.

  1. 터미널 메뉴에서 새 터미널을 선택합니다. 터미널 창은 일반적으로 화면의 아래쪽 절반에서 열립니다.

  2. 기본 셸은 일반적으로 터미널 창의 오른쪽에 표시된 대로 pwsh입니다.

    Screenshot of the Visual Studio Code terminal window, with p w s h shown as the shell option.

  3. 셸 드롭다운을 선택한 다음, Azure Cloud Shell(PowerShell)을 선택합니다.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Azure Cloud Shell (PowerShell) selected.

  4. 새 셸이 열립니다.

Azure PowerShell을 사용하여 Azure에 로그인

  1. Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.

    Connect-AzAccount
    
  2. 열리는 브라우저에서 Azure 계정에 로그인합니다.

서비스 주체 및 키 만들기

  1. Visual Studio Code 터미널에서 이 Azure CLI 명령을 실행하여 서비스 주체를 만듭니다.

    az ad sp create-for-rbac --name ToyWebsitePipeline
    

    Azure CLI에서 다른 애플리케이션의 표시 이름이 동일하다는 오류가 표시되는 경우 Microsoft Entra 테넌트를 사용하는 다른 사용자가 동일한 이름의 서비스 주체를 만들었음을 의미합니다. --name 값을 고유한 값으로 변경합니다. 이는 나머지 연습을 수행하는 방법에는 영향을 주지 않습니다.

  2. 이전 명령의 JSON 출력을 살펴보세요. 다음과 같은 속성이 포함됩니다.

    • appId: 서비스 주체의 애플리케이션 ID입니다.
    • password: 서비스 주체의 키입니다.
    • tenant: Microsoft Entra 테넌트 ID입니다.

    이러한 값을 안전한 곳에 복사하세요. 곧 사용하게 될 것입니다.

  1. Visual Studio Code 터미널에서 다음 Azure PowerShell 명령을 실행하여 서비스 주체를 만듭니다.

    $servicePrincipal = New-AzADServicePrincipal `
      -DisplayName ToyWebsitePipeline
    
  2. 다음 명령을 실행하여 서비스 주체의 키를 가져옵니다.

    $servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
    
  3. 다음 명령을 실행하여 서비스 주체의 애플리케이션 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)"
    

    값을 안전한 곳에 복사하세요. 곧 사용하게 될 것입니다.

경고

이전 명령의 출력에는 서비스 주체에 대한 키가 포함됩니다. 이러한 명령을 실행하는 위치에 주의해야 합니다. 예를 들어 다른 사람이 볼 수 있는 환경에서는 실행하지 마세요.

서비스 주체를 테스트합니다.

이제 서비스 주체가 만들어졌으므로 자격 증명을 사용하여 로그인하여 성공적으로 만들어졌는지 확인할 수 있습니다.

  1. 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가 구독 목록을 확인하거나 오류를 표시하지 않도록 합니다.

  2. 이전 명령의 출력이 서비스 주체의 애플리케이션 ID가 있는 user 속성을 포함하는 JSON 개체인지 확인합니다. 이 정보는 서비스 주체가 성공적으로 로그인했음을 나타냅니다.

  3. 다음 명령을 사용하여 서비스 주체의 계정에서 로그아웃합니다.

    az logout
    
  1. Visual Studio Code 터미널에서 이 Azure PowerShell 명령을 실행하여 서비스 주체의 자격 증명에 대한 메시지를 안전하게 표시합니다. 사용자 이름 및 암호에 대해 이전 단계의 서비스 주체 애플리케이션 ID와 키를 각각 사용합니다.

    $credential = Get-Credential
    
  2. Visual Studio Code 터미널에서 이 Azure PowerShell 명령을 실행하여 서비스 주체의 자격 증명을 통해 로그인합니다.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. 이전 명령의 출력에 서비스 주체의 애플리케이션 ID가 있는 Account 속성과 빈 SubscriptionName 값이 포함되어 있는지 확인합니다. 이 정보는 서비스 주체가 성공적으로 로그인했음을 나타냅니다.

  4. 다음 명령을 사용하여 서비스 주체의 계정에서 로그아웃합니다.

    Logout-AzAccount
    

이제 작동하는 서비스 주체가 생겼으므로 다음 단계로 이동하여 Azure 환경에 액세스하도록 사용 권한을 부여할 수 있습니다.