다음을 통해 공유


자습서: Linux VM/VMSS를 사용하여 Azure 리소스에 액세스

필수 조건

Linux VM 시스템 할당 관리 ID를 사용하여 Azure Data Lake Store에 액세스

이 자습서에서는 Linux VM(가상 머신)에 대해 시스템 할당 관리 ID를 사용하여 Azure Data Lake Store에 액세스하는 방법을 보여 줍니다.

다음을 배우게 됩니다:

  • VM에 Azure Data Lake Store에 대한 액세스 권한을 부여합니다.
  • VM의 시스템 할당 관리 ID를 사용하여 액세스 토큰을 가져와 Azure Data Lake Store에 액세스합니다.

액세스 권한 부여

이 섹션에서는 Azure Data Lake Store의 파일 및 폴더에 대한 액세스 권한을 VM에 부여하는 방법을 보여 줍니다. 이 단계에서는 기존 Data Lake Store 인스턴스를 사용하거나 새 인스턴스를 만들 수 있습니다. Azure Portal을 사용하여 Data Lake Store 인스턴스를 만들려면 Azure Data Lake Store 빠른 시작을 따릅니다. Azure Data Lake Store 설명서에는 Azure CLI 및 Azure PowerShell을 사용하는 빠른 시작도 있습니다.

Data Lake Store에서 새 폴더를 만들고 Linux VM 시스템이 할당한 관리 ID에 해당 폴더의 파일을 읽고, 쓰고, 실행할 수 있는 권한을 부여합니다.

  1. Azure Portal의 왼쪽 창에서 Data Lake Store 를 선택합니다.
  2. 사용하려는 Data Lake Store 인스턴스를 선택합니다.
  3. 명령 모음에서 데이터 탐색기 를 선택합니다.
  4. Data Lake Store 인스턴스의 루트 폴더가 선택됩니다. 명령 모음에서 액세스를 선택합니다.
  5. 추가를 선택합니다. 선택 상자에 VM의 이름을 입력합니다. 예를 들어 DevTestVM입니다. 검색 결과에서 VM을 선택한 다음, 선택을 선택합니다.
  6. 사용 권한 선택을 선택합니다. 읽기실행을 선택하고, 이 폴더에 추가하고, 액세스 권한만으로 추가한 다음, 확인을 선택합니다. 권한이 성공적으로 추가되어야 합니다.
  7. Access( 액세스 ) 창을 닫습니다.
  8. 새 폴더를 만든 다음 명령 모음에서 새 폴더를 선택하고 새 폴더에 이름을 지정합니다. 예를 들어 TestFolder를 선택한 다음 확인을 선택합니다.
  9. 만든 폴더를 선택한 다음, 명령 모음에서 Access 를 선택합니다.
  10. 추가를 선택한 다음, 선택 상자에 VM의 이름을 입력합니다.
  11. 검색 결과에서 VM을 선택한 다음, 선택을 선택합니다.
  12. Select Permissions(권한 선택)를 선택한 다음, Read(읽기), Write and Execute(쓰기, 실행)를 차례로 선택합니다.
  13. 이 폴더에 추가하도록 선택한 다음, 액세스 권한 항목 및 기본 권한 항목으로 추가한 다음, 확인을 선택합니다. 권한이 성공적으로 추가되어야 합니다.

Azure 리소스에 대한 관리 ID는 이제 만든 폴더의 파일에 대해 모든 작업을 수행할 수 있습니다. Data Lake Store에 대한 액세스 관리에 대한 자세한 내용은 Data Lake Store의 액세스 제어를 참조하세요.

액세스 토큰 가져오기

이 섹션에서는 액세스 토큰을 가져오고 Data Lake Store 파일 시스템을 호출하는 방법을 보여 줍니다. Azure Data Lake Store는 기본적으로 Microsoft Entra 인증을 지원하므로 Azure 리소스에 대한 관리 ID를 사용하여 얻은 액세스 토큰을 직접 수락할 수 있습니다.

Data Lake Store 파일 시스템에 인증하려면 Microsoft Entra ID에서 발급한 액세스 토큰을 Data Lake Store 파일 시스템 엔드포인트로 보냅니다. 액세스 토큰은 형식의 Bearer \<ACCESS_TOKEN_VALUE\>권한 부여 헤더에 있습니다. Microsoft Entra 인증에 대한 Data Lake Store 지원에 대한 자세한 내용은 Microsoft Entra ID를 사용하여 Data Lake Store를 통한 인증을 참조하세요.

다음으로, cURL을 사용하여 REST 요청을 수행하여 Data Lake Store 파일 시스템에 대한 REST API에 인증합니다.

비고

Data Lake Store 파일 시스템용 클라이언트 SDK는 아직 Azure 리소스에 대한 관리 ID를 지원하지 않습니다.

이러한 단계를 완료하려면 SSH 클라이언트가 필요합니다. Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다. SSH 클라이언트의 키를 구성하는 데 도움이 필요한 경우 Azure에서 Windows와 SSH 키를 사용하는 방법 또는 Azure에서 Linux VM에 대한 SSH 공개 및 개인 키 쌍을 만들고 사용하는 방법을 참조하세요.

  1. 포털에서 Linux VM으로 이동한 다음, 개요 섹션에서 연결을 선택합니다.

  2. 선택한 SSH 클라이언트를 사용하여 VM에 연결합니다.

  3. 터미널 창에서 cURL을 사용하여 로컬 관리 ID Azure 리소스 엔드포인트에 요청하여 Data Lake Store 파일 시스템에 대한 액세스 토큰을 가져옵니다. Data Lake Store의 리소스 식별자는 https://datalake.azure.net/입니다. 리소스 식별자에 후행 슬래시를 포함하는 것이 중요합니다.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -H Metadata:true   
    

    성공적인 응답은 Data Lake Store에 인증하는 데 사용하는 액세스 토큰을 반환합니다.

    {"access_token":"eyJ0eXAiOiJ...",
     "refresh_token":"",
     "expires_in":"3599",
     "expires_on":"1508119757",
     "not_before":"1508115857",
     "resource":"https://datalake.azure.net/",
     "token_type":"Bearer"}
    
  4. cURL을 사용하여 Data Lake Store 파일 시스템의 REST 엔드포인트에 루트 폴더의 폴더를 나열하도록 요청합니다. 모든 것이 올바르게 구성되었는지 확인하는 가장 좋은 방법입니다. 이전 단계에서 액세스 토큰의 값을 복사합니다. Authorization 헤더의 문자열 Bearer 에 대문자 "B"가 있어야 합니다. Azure Portal에서 Data Lake Store 창의 개요 섹션에서 Data Lake Store 인스턴스의 이름을 찾을 수 있습니다.

    curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
    

    성공적인 응답은 다음과 같습니다.

    {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
    
  5. 이제 Data Lake Store 인스턴스에 파일을 업로드합니다. 먼저 업로드할 파일을 만듭니다.

    echo "Test file." > Test1.txt
    
  6. cURL을 사용하여 Data Lake Store 파일 시스템의 REST 엔드포인트에 요청하여 이전에 만든 폴더에 파일을 업로드합니다. 업로드에는 리디렉션이 포함되며 cURL은 리디렉션을 자동으로 따릅니다.

    curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE' 
    

    성공적인 응답은 다음과 같습니다.

    HTTP/1.1 100 Continue
    HTTP/1.1 307 Temporary Redirect
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    
    HTTP/1.1 100 Continue
    
    HTTP/1.1 201 Created
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    

마지막으로, 이제 Data Lake Store 파일 시스템에 다른 API를 사용하여 파일에 추가하고, 파일을 다운로드하는 등의 작업을 수행할 수 있습니다.

Linux VM 시스템 할당 관리 ID를 사용하여 Azure Storage에 액세스

이 자습서에서는 Linux VM(가상 머신)에 대해 시스템이 할당한 관리 ID를 사용하여 Azure Storage에 액세스하는 방법을 보여 줍니다.

다음을 배우게 됩니다:

  • 스토리지 계정 만들기
  • 스토리지 계정에 Blob 컨테이너 만들기Create a blob container in a storage account
  • Linux VM의 관리 ID에 Azure Storage 컨테이너에 대한 액세스 권한 부여
  • 액세스 토큰을 가져와서 Azure Storage를 호출하는 데 사용합니다.

스토리지 계정 만들기

이 예제에서 CLI 스크립트를 실행하려면 두 가지 옵션이 있습니다.

  • Azure Portal 또는 각 코드 블록의 오른쪽 위 모서리에 있는 사용해 보기 단추를 통해 Azure Cloud Shell을 사용합니다.
  • 로컬 CLI 콘솔을 사용하려는 경우 최신 버전의 CLI 2.0(2.0.23 이상)을 설치합니다.

먼저 스토리지 계정을 만듭니다.

  1. Azure Portal의 왼쪽 위 모서리에 있는 + 리소스 만들기 단추를 선택합니다.

  2. 스토리지, 스토리지 계정 - Blob, 파일, 테이블, 큐를 차례로 선택합니다.

  3. 이름에서 스토리지 계정의 이름을 입력합니다.

  4. 배포 모델계정 종류리소스 관리자스토리지(범용 v1)로 설정해야 합니다.

  5. 구독리소스 그룹이 이전 단계에서 VM을 만들 때 지정한 것과 일치하는지 확인합니다.

  6. 선택하고생성합니다.

    새 스토리지 계정 만들기 화면을 보여 주는 스크린샷입니다.

Blob 컨테이너를 만들고 스토리지 계정에 파일 업로드

파일에는 Blob Storage가 필요하므로 파일을 저장할 Blob 컨테이너를 만들어야 합니다. 그런 다음 새 스토리지 계정의 Blob 컨테이너에 파일을 업로드합니다.

  1. 새로 만든 스토리지 계정으로 이동합니다.

  2. Blob Service, 컨테이너를 차례로 선택합니다.

  3. 페이지 맨 위에서 + 컨테이너를 선택합니다.

  4. 새 컨테이너를 선택한 다음, 컨테이너의 이름을 입력합니다.

  5. Public access level(공용 액세스 수준)이 기본값인지 확인합니다.

    스토리지 컨테이너 생성 화면을 보여주는 스크린샷입니다.

  6. 원하는 편집기를 사용하여 로컬 컴퓨터에 hello world.txt 이라는 파일을 만듭니다. 파일을 열고 Hello world!라는 텍스트를 추가한 다음 저장합니다.

  7. 컨테이너 이름을 선택한 다음, 업로드를 선택합니다. 이렇게 하면 새로 생성된 컨테이너에 파일이 업로드됩니다.

  8. Blob 업로드 창의 파일 섹션에서 폴더 아이콘을 선택하고 로컬 컴퓨터에 hello_world.txt 있는 파일로 이동합니다.

  9. 파일을 선택한 다음, 업로드를 선택합니다.

    텍스트 파일 업로드 섹션을 보여주는 스크린샷.

Azure Storage 컨테이너에 대한 VM 액세스 권한 부여

VM의 관리 ID를 사용하여 Azure Storage Blob에서 데이터를 검색할 수 있습니다. Azure 리소스에 대한 관리 ID를 사용하여 Microsoft Entra 인증을 지원하는 리소스에 인증할 수 있습니다. 스토리지 계정이 포함된 리소스 그룹의 범위에서 관리 ID에 storage-blob-data-reader 역할을 할당하여 액세스 권한을 부여합니다.

세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

비고

스토리지에 대한 권한을 부여하는 데 사용할 수 있는 다양한 역할에 대한 자세한 내용은 Microsoft Entra ID를 사용하여 Blob 및 큐에 대한 액세스 권한 부여를 검토하세요.

액세스 토큰을 가져와서 Azure Storage를 호출하는 데 사용합니다.

Azure Storage는 기본적으로 Microsoft Entra 인증을 지원하므로 관리 ID를 사용하여 얻은 액세스 토큰을 직접 수락할 수 있습니다. 이는 Azure Storage와 Microsoft Entra ID 통합의 일부이며 연결 문자열에 자격 증명을 제공하는 것과는 다릅니다.

다음 단계를 완료하려면 이전에 만든 VM에서 작업해야 하며 SSH 클라이언트가 있어야 연결할 수 있습니다.

Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다. SSH 클라이언트의 키를 구성하는 데 도움이 필요한 경우 Azure에서 Windows와 SSH 키를 사용하는 방법 또는 Azure에서 Linux VM에 대한 SSH 공개 및 개인 키 쌍을 만들고 사용하는 방법을 참조하세요.

  1. Azure Portal에서 Virtual Machines로 이동하고, Linux 가상 머신으로 이동한 다음, 개요 페이지에서 연결을 선택합니다. 문자열을 복사하여 VM에 연결합니다.

  2. 선택한 SSH 클라이언트를 사용하여 VM에 연결합니다.

  3. 터미널 창에서 CURL을 사용하여 로컬 관리 ID 엔드포인트에 요청하여 Azure Storage에 대한 액세스 토큰을 가져옵니다.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
    
  4. 액세스 토큰을 사용하여 Azure Storage에 액세스합니다. 예를 들어 이전에 컨테이너에 업로드한 샘플 파일의 내용을 읽으려면 , <STORAGE ACCOUNT><CONTAINER NAME><FILE NAME>값을 이전에 지정한 값 및 <ACCESS TOKEN> 이전 단계에서 반환된 토큰으로 바꿉니다.

    curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
    

    응답에는 파일의 내용이 포함됩니다.

    Hello world! :)
    

마지막으로, 토큰을 변수에 저장하고 다음과 같이 두 번째 명령에 전달할 수도 있습니다.

# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')

# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
  -H "x-ms-version: 2017-11-09" \
  -H "Authorization: Bearer $access_token"

Linux VM 시스템 할당 관리 ID를 사용하여 SAS 자격 증명을 통해 Azure Storage에 액세스

이 자습서에서는 Linux VM(가상 머신)에 대해 시스템이 할당한 관리 ID를 사용하여 스토리지 SAS(공유 액세스 서명) 자격 증명을 얻는 방법을 보여 줍니다. 특히 서비스 SAS 자격 증명입니다.

비고

이 자습서에서 생성된 SAS 키는 VM에 제한/바인딩되지 않습니다.

서비스 SAS는 계정 액세스 키를 노출하지 않고 스토리지 계정의 개체에 대한 제한된 액세스 권한을 부여합니다. 제한된 시간 및 특정 서비스에 대한 액세스 권한을 부여할 수 있습니다. 스토리지 작업을 수행할 때 평소와 같이 SAS 자격 증명을 사용할 수 있습니다. 예를 들어 스토리지 SDK를 사용하는 경우입니다. 이 자습서에서는 Azure Storage CLI를 사용하여 Blob을 업로드하고 다운로드합니다.

다음을 배우게 됩니다:

  • 스토리지 계정 만들기
  • 스토리지 계정에 Blob 컨테이너 만들기
  • Resource Manager에서 스토리지 계정 SAS에 대한 VM 액세스 권한 부여Grant your VM access to a storage account SAS in Resource Manager
  • VM의 ID를 사용하여 액세스 토큰을 가져오고 이를 사용하여 Resource Manager에서 SAS를 검색합니다.

스토리지 계정 만들기

아직 없는 경우 스토리지 계정을 만들어야 합니다. 이 단계를 건너뛰고 VM 시스템이 할당한 관리 ID에 기존 스토리지 계정의 키에 대한 액세스 권한을 부여하도록 선택할 수 있습니다.

  1. Azure Portal의 왼쪽 위 모서리에 있는 +/새 서비스 만들기 단추를 선택합니다.

  2. Storage(스토리지), Storage Account(스토리지 계정), Create storage account(스토리지 계정 생성) 패널을 차례로 선택합니다.

  3. 스토리지 계정의 이름을 입력합니다. 나중에 필요하므로 이 이름을 기억해 두세요.

  4. 배포 모델이Resource Manager로 설정되고 계정 종류범용으로 설정되어 있는지 확인합니다.

  5. 구독리소스 그룹이 VM을 만들 때 지정한 것과 일치하는지 확인합니다.

  6. 만들기를 선택하여 스토리지 계정 만들기를 완료합니다.

    새 스토리지 계정 만들기 화면을 보여 주는 스크린샷입니다.

스토리지 계정에 Blob 컨테이너 만들기

자습서의 뒷부분에서는 새 스토리지 계정에 파일을 업로드하고 다운로드합니다. 파일에는 Blob Storage가 필요하므로 파일을 저장할 Blob 컨테이너를 만들어야 합니다.

  1. 새로 만든 스토리지 계정으로 이동합니다.

  2. Blob 서비스 아래의 왼쪽 패널에서 컨테이너 링크를 선택합니다.

  3. 페이지 맨 위에서 + 컨테이너를 선택하면 새 컨테이너 패널이 나타납니다.

  4. 컨테이너에 이름을 지정하고, 액세스 수준을 선택한 다음, 확인을 선택합니다. 자습서의 뒷부분에서 지정한 이름이 필요합니다.

    스토리지 컨테이너 생성 화면을 보여주는 스크린샷.

VM의 시스템 할당 관리 ID에 스토리지 SAS를 사용할 수 있는 액세스 권한 부여

Azure Storage는 기본적으로 Microsoft Entra 인증을 지원하므로 VM의 시스템 할당 관리 ID를 사용하여 Resource Manager에서 스토리지 SAS를 검색할 수 있습니다. 그런 다음 SAS를 사용하여 스토리지에 액세스할 수 있습니다.

이 섹션에서는 VM의 시스템 할당 관리 ID에 스토리지 계정 SAS에 대한 액세스 권한을 부여합니다. Storage Account Contributor 역할을 스토리지 계정이 포함된 리소스 그룹의 범위에서 관리 ID에 할당합니다.

세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

비고

스토리지에 대한 권한을 부여하는 데 사용할 수 있는 다양한 역할에 대한 자세한 내용은 Microsoft Entra ID를 사용하여 Blob 및 큐에 대한 액세스 권한 부여를 검토하세요.

VM의 ID를 사용하여 액세스 토큰을 가져오고 이를 사용하여 Azure Resource Manager를 호출합니다.

이 자습서의 나머지 부분에서는 이전에 만든 VM에서 작업합니다.

이러한 단계를 완료하려면 SSH 클라이언트가 필요합니다. Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다. SSH 클라이언트의 키를 구성하는 데 도움이 필요한 경우 다음을 참조하세요.

SSH 클라이언트가 있으면 다음 단계를 수행합니다.

  1. Azure Portal에서 Virtual Machines로 이동한 다음, Linux 가상 머신으로 이동합니다.
  2. 개요 페이지에서 화면 맨 위에 있는 연결을 선택합니다.
  3. 문자열을 복사하여 VM에 연결합니다.
  4. SSH 클라이언트를 사용하여 VM에 연결합니다.
  5. Linux VM을 만들 때 추가한 암호를 입력합니다. 그러면 성공적으로 로그인됩니다.
  6. CURL을 사용하여 Azure Resource Manager에 대한 액세스 토큰을 가져옵니다.

액세스 토큰에 대한 CURL 요청 및 응답은 다음과 같습니다.

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true    

비고

이전 요청에서 매개 변수의 값은 resource Microsoft Entra ID에서 예상하는 값과 정확히 일치해야 합니다. Azure Resource Manager 리소스 ID를 사용하는 경우 URI에 후행 슬래시를 포함해야 합니다.

다음 응답에서는 간결성을 위해 access_token 요소가 짧아졌습니다.

{
  "access_token":"eyJ0eXAiOiJ...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Azure Resource Manager에서 SAS 자격 증명을 가져와 스토리지 호출

다음으로, CURL을 사용하여 이전 섹션에서 검색한 액세스 토큰을 사용하여 Resource Manager를 호출합니다. 이를 사용하여 스토리지 SAS 자격 증명을 만듭니다. SAS 자격 증명이 있으면 스토리지 업로드/다운로드 작업을 호출할 수 있습니다.

이 요청의 경우 다음 HTTP 요청 매개 변수를 사용하여 SAS 자격 증명을 만듭니다.

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite.  Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

SAS 자격 증명에 대한 POST 요청 본문에 이러한 매개 변수를 포함합니다. SAS 자격 증명을 만들기 위한 매개 변수에 대한 자세한 내용은 목록 서비스 SAS REST 참조를 참조하세요.

다음 CURL 요청을 사용하여 SAS 자격 증명을 가져옵니다. , , , <SUBSCRIPTION ID><RESOURCE GROUP> 매개 변수 값을 사용자 고유의 값으로 바꿔<STORAGE ACCOUNT NAME><CONTAINER NAME>야 합니다. <EXPIRATION TIME> 값을 <ACCESS TOKEN> 이전에 검색한 액세스 토큰으로 바꿉니다.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"

비고

이전 URL의 텍스트는 대/소문자를 구분하므로 리소스 그룹에 대문자를 사용하여 적절하게 반영하는지 확인합니다. 또한 이것이 GET 요청이 아니라 POST 요청이라는 것을 아는 것이 중요합니다.

CURL 응답은 SAS 자격 증명을 반환합니다.

{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"} 

Linux VM에서 다음 명령을 사용하여 Blob Storage 컨테이너에 업로드할 샘플 Blob 파일을 만듭니다.

echo "This is a test file." > test.txt

다음으로, SAS 자격 증명을 사용하여 CLI az storage 명령으로 인증한 다음, 파일을 Blob 컨테이너에 업로드합니다. 이 단계에서는 VM에 최신 Azure CLI를 설치해야 합니다(아직 설치하지 않은 경우).

 az storage blob upload --container-name 
                        --file 
                        --name
                        --account-name 
                        --sas-token

응답:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-21T03:58:56+00:00"
}

Azure CLI를 사용하고 SAS 자격 증명으로 인증하여 파일을 다운로드할 수도 있습니다.

요청:

az storage blob download --container-name
                         --file 
                         --name 
                         --account-name
                         --sas-token

응답:

{
  "content": null,
  "metadata": {},
  "name": "testblob",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 16,
    "contentRange": "bytes 0-15/16",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D4F9929765C139\"",
    "lastModified": "2017-09-21T03:58:56+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Linux VM 시스템 할당 관리 ID를 사용하여 액세스 키를 통해 Azure Storage에 액세스

이 자습서에서는 Linux VM(가상 머신)에 대해 시스템이 할당한 관리 ID를 사용하여 스토리지 계정 액세스 키를 검색하는 방법을 보여 줍니다. 스토리지 작업을 수행할 때 평소와 같이 스토리지 액세스 키를 사용할 수 있습니다. 예를 들어 스토리지 SDK를 사용하는 경우입니다. 이 자습서에서는 Azure CLI를 사용하여 Blob을 업로드하고 다운로드합니다.

다음을 배우게 됩니다:

  • Resource Manager에서 스토리지 계정 액세스 키에 대한 VM 액세스 권한 부여Grant your VM access to storage account access keys in Resource Manager
  • VM의 ID를 사용하여 액세스 토큰을 가져오고 이를 사용하여 Resource Manager에서 스토리지 액세스 키를 검색합니다.

스토리지 계정 만들기

이 자습서를 시작하기 전에 기존 스토리지 계정이 없는 경우 계정을 만들어야 합니다. 기존 스토리지 계정이 있는 경우 다음 단계에 따라 VM 시스템 할당 관리 ID에 기존 스토리지 계정의 키에 대한 액세스 권한을 부여합니다.

  1. Azure Portal의 왼쪽 위 모서리에 있는 +/새 서비스 만들기 단추를 선택합니다.

  2. Storage(스토리지), Storage Account(스토리지 계정), Create storage account(스토리지 계정 생성) 패널을 차례로 선택합니다.

  3. 스토리지 계정의 이름을 입력합니다. 나중에 필요하므로 이 이름을 기억해 두세요.

  4. 배포 모델이Resource Manager로 설정되고 계정 종류범용으로 설정되어 있는지 확인합니다.

  5. 구독리소스 그룹이 VM을 만들 때 지정한 것과 일치하는지 확인합니다.

  6. 만들기를 선택하여 스토리지 계정 만들기를 완료합니다.

    새 스토리지 계정 생성을 보여 주는 스크린샷입니다.

스토리지 계정에 Blob 컨테이너 만들기

자습서의 뒷부분에서는 새 스토리지 계정에 파일을 업로드하고 다운로드합니다. 파일에는 Blob Storage가 필요하므로 파일을 저장할 Blob 컨테이너를 만들어야 합니다.

  1. 새로 만든 스토리지 계정으로 이동합니다.

  2. Blob 서비스 아래의 왼쪽 패널에서 컨테이너 링크를 선택합니다.

  3. 페이지 맨 위에서 + 컨테이너를 선택하면 새 컨테이너 패널이 나타납니다.

  4. 컨테이너에 이름을 지정하고, 액세스 수준을 선택한 다음, 확인을 선택합니다. 자습서의 뒷부분에서 지정한 이름이 필요합니다.

    스토리지 컨테이너를 만드는 방법을 보여 주는 스크린샷입니다.

스토리지 계정 액세스 키를 사용할 수 있도록 VM의 시스템 할당 관리 ID 액세스 권한 부여

Azure Storage는 기본적으로 Microsoft Entra 인증을 지원하지 않습니다. 그러나 VM의 시스템 할당 관리 ID를 사용하여 Resource Manager에서 스토리지 SAS를 검색한 다음, SAS를 사용하여 스토리지에 액세스할 수 있습니다. 이 단계에서는 VM의 시스템 할당 관리 ID에 스토리지 계정 SAS에 대한 액세스 권한을 부여합니다. 스토리지 계정이 포함된 리소스 그룹의 범위에서 관리 ID에 Storage Account Contributor 역할을 할당하여 액세스 권한을 부여합니다.

세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

비고

스토리지에 대한 권한을 부여하는 데 사용할 수 있는 다양한 역할에 대한 자세한 내용은 Microsoft Entra ID를 사용하여 Blob 및 큐에 대한 액세스 권한 부여를 검토하세요.

VM의 ID를 사용하여 액세스 토큰을 가져오고 이를 사용하여 Azure Resource Manager를 호출합니다.

자습서의 나머지 부분에서는 이전에 만든 VM에서 작업합니다.

이러한 단계를 완료하려면 SSH 클라이언트가 필요합니다. Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다. SSH 클라이언트의 키를 구성하는 데 도움이 필요한 경우 Azure에서 Windows와 SSH 키를 사용하는 방법 또는 Azure에서 Linux VM에 대한 SSH 공개 및 개인 키 쌍을 만들고 사용하는 방법을 참조하세요.

  1. Azure Portal에서 Virtual Machines로 이동하여 Linux 가상 머신을 선택한 다음, 개요 페이지에서 맨 위에 있는 연결을 선택합니다. 문자열을 복사하여 VM에 연결합니다.

  2. SSH 클라이언트를 사용하여 VM에 연결합니다.

  3. 다음으로, Linux VM을 만들 때 추가한 암호를 입력해야 합니다.

  4. CURL을 사용하여 Azure Resource Manager에 대한 액세스 토큰을 가져옵니다.

    액세스 토큰에 대한 CURL 요청 및 응답은 다음과 같습니다.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
    

    비고

    이전 요청에서 "resource" 매개 변수의 값은 Microsoft Entra ID에서 예상하는 값과 정확히 일치해야 합니다. Azure Resource Manager 리소스 ID를 사용하는 경우 URI에 후행 슬래시를 포함해야 합니다. 다음 응답에서 access_token 요소는 간결성을 위해 짧아졌습니다.

    {
      "access_token": "eyJ0eXAiOiJ...",
      "refresh_token": "",
      "expires_in": "3599",
      "expires_on": "1504130527",
      "not_before": "1504126627",
      "resource": "https://management.azure.com",
      "token_type": "Bearer"
    }
    

Azure Resource Manager에서 스토리지 계정 액세스 키를 가져와 스토리지 호출

이제 CURL을 사용하여 이전 섹션에서 검색한 액세스 토큰을 사용하는 Resource Manager를 호출하고 스토리지 액세스 키를 검색합니다. 스토리지 액세스 키가 있으면 스토리지 업로드/다운로드 작업을 호출할 수 있습니다. , <SUBSCRIPTION ID>, 및 <RESOURCE GROUP> 매개 변수 값을 사용자 고유의 값으로 바꿔<STORAGE ACCOUNT NAME>야 합니다. 값을 <ACCESS TOKEN> 이전에 검색한 액세스 토큰으로 바꿉니다.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listKeys?api-version=2016-12-01 --request POST -d "" -H "Authorization: Bearer <ACCESS TOKEN>" 

비고

이전 URL의 텍스트는 대/소문자를 구분하므로 리소스 그룹에 대문자를 사용하여 적절하게 반영하는지 확인합니다. 또한 이것이 GET 요청이 아니라 POST 요청임을 알고 NULL일 수 있는 -d 있는 길이 제한을 캡처하기 위해 값을 전달해야 합니다.

CURL 응답은 키 목록을 제공합니다.

{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]} 

Blob Storage 컨테이너에 업로드할 샘플 Blob 파일을 만듭니다. Linux VM에서는 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.

echo "This is a test file." > test.txt

다음으로, 스토리지 액세스 키를 사용하여 CLI az storage 명령으로 인증하고 Blob 컨테이너에 파일을 업로드합니다. 이 단계에서는 VM에 최신 Azure CLI를 설치해야 합니다(아직 설치하지 않은 경우).

az storage blob upload -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

응답:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-12T03:58:56+00:00"
}

또한 Azure CLI를 사용하고 스토리지 액세스 키로 인증하여 파일을 다운로드할 수 있습니다.

요청:

az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

응답:

{
  "content": null,
  "metadata": {},
  "name": "test.txt",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 21,
    "contentRange": "bytes 0-20/21",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D5067F30D0C283\"",
    "lastModified": "2017-09-28T14:42:49+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Linux VM 시스템 할당 관리 ID를 사용하여 Azure Key Vault 액세스

이 자습서에서는 Linux VM(가상 머신)이 시스템 할당 관리 ID를 사용하여 Azure Key Vault에 액세스하는 방법을 보여 줍니다. Key Vault를 사용하면 클라이언트 애플리케이션이 비밀을 사용하여 Microsoft Entra ID로 보호되지 않는 리소스에 액세스할 수 있습니다. 관리 서비스 ID는 Azure에서 자동으로 관리되며 코드에 인증 정보를 포함하지 않고도 Microsoft Entra 인증을 지원하는 서비스에 인증할 수 있습니다.

다음을 배우게 됩니다:

  • Key Vault에 저장된 비밀에 대한 VM 액세스 권한 부여
  • VM의 ID를 사용하여 액세스 토큰을 가져오고 이를 사용하여 Key Vault에서 비밀을 검색합니다.

Key Vault 만들기

또한 시스템에서 할당한 관리 ID를 사용하도록 설정된 Linux 가상 머신이 필요합니다.

이 섹션에서는 Key Vault에 저장된 비밀에 대한 액세스 권한을 VM에 부여하는 방법을 보여 줍니다. Azure 리소스에 대한 관리 ID를 사용하여 코드는 Microsoft Entra 인증을 지원하는 리소스에 인증하기 위한 액세스 토큰을 가져올 수 있습니다.

그러나 모든 Azure 서비스가 Microsoft Entra 인증을 지원하는 것은 아닙니다. 해당 서비스에서 Azure 리소스에 대한 관리 ID를 사용하려면 Azure Key Vault에 서비스 자격 증명을 저장하고 VM의 관리 ID를 사용하여 Key Vault에 액세스하여 자격 증명을 검색합니다.

먼저 Key Vault를 만들고 VM의 시스템 할당 관리 ID에 Key Vault에 대한 액세스 권한을 부여해야 합니다.

  1. Azure Portal에 로그인합니다.

  2. 왼쪽 탐색 모음 맨 위에서 리소스 만들기를 선택합니다.

  3. Marketplace 검색 상자에서 Key Vault를 입력하고 Enter 키를 누릅니다.

  4. 결과에서 Key Vault 를 선택합니다.

  5. 선택하고생성합니다.

  6. 새 키 볼트의 이름을 입력합니다.

    Azure Key Vault 만들기 화면을 보여 주는 스크린샷입니다.

  7. 필요한 모든 정보를 입력하고 이 자습서에서 사용하는 가상 머신을 만든 구독 및 리소스 그룹을 선택해야 합니다.

  8. 검토+ 만들기를 선택한 다음, 만들기를 선택합니다.

비밀 만들기

다음으로, VM에서 실행되는 코드를 사용하여 나중에 검색할 수 있도록 Key Vault에 비밀을 추가해야 합니다. 이 섹션에서는 PowerShell을 사용합니다. 그러나 이 가상 머신에서 실행되는 모든 코드에도 동일한 개념이 적용됩니다.

  1. 새로 만든 Key Vault로 이동합니다.

  2. 비밀을 선택한 다음, 추가를 선택합니다.

  3. 생성/가져오기를 선택합니다.

  4. Create a secret(비밀 만들기) 섹션에서 Upload options(업로드 옵션)로 이동하여 Manual(수동)이 선택되어 있는지 확인합니다.

  5. 비밀의 이름과 값을 입력합니다.  값은 원하는 모든 것이 될 수 있습니다. 

  6. 활성화 날짜와 만료 날짜를 지워 두고 사용이로 설정되어 있는지 확인합니다. 

  7. 만들기를 선택하여 비밀을 만듭니다.

    시크릿 생성을 보여주는 스크린샷.

액세스 권한 부여

가상 머신에서 사용하는 관리 ID는 Key Vault에 저장된 비밀을 읽을 수 있는 액세스 권한이 필요합니다.

  1. 새로 만든 Key Vault로 이동합니다.

  2. 왼쪽 탐색 영역에서 액세스 정책을 선택합니다.

  3. 액세스 정책 추가 선택.

    키 자격 증명 모음 만들기 액세스 정책 화면의 스크린샷입니다.

  4. Configure from template (optional)(템플릿에서 구성(선택 사항))의 Add access policy(액세스 정책 추가) 섹션에 있는 드롭다운 메뉴에서 Secret Management(시크릿 관리)를 선택합니다.

  5. Select Principal(보안 주체 선택)을 선택한 다음, 검색 필드에 이전에 만든 VM의 이름을 입력합니다.  결과 목록에서 VM을 선택한 다음, 선택합니다.

  6. 추가를 선택합니다.

  7. 저장을 선택합니다.

데이터 액세스

이러한 단계를 완료하려면 SSH 클라이언트가 필요합니다.  Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다. SSH 클라이언트의 키를 구성하는 데 도움이 필요한 경우 Azure에서 Windows와 SSH 키를 사용하는 방법 또는 Azure에서 Linux VM에 대한 SSH 공개 및 개인 키 쌍을 만들고 사용하는 방법을 참조하세요.

중요합니다

모든 Azure SDK는 대상 서비스에 액세스하기 위해 Microsoft Entra 토큰을 쉽게 획득할 수 있는 Azure.Identity 라이브러리를 지원합니다. Azure SDK 및 Azure.Identity 라이브러리 액세스에 대해 자세히 알아보세요.

  1. 포털에서 Linux VM으로 이동하고 개요에서 연결을 선택합니다. 
  2. 선택한 SSH 클라이언트를 사용하여 VM에 연결합니다
  3. 터미널 창에서 cURL을 사용하여 Azure 리소스 엔드포인트에 대한 로컬 관리 ID에 요청하여 Azure Key Vault에 대한 액세스 토큰을 가져옵니다.   액세스 토큰에 대한 CURL 요청은 다음과 같습니다.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
  ```
The response includes the access token you need to access Resource Manager. 
  
Response:
  
```bash
{"access_token":"eyJ0eXAi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://vault.azure.net",
"token_type":"Bearer"} 

이 액세스 토큰을 사용하여 Azure Key Vault에 인증할 수 있습니다.  다음 CURL 요청은 CURL 및 Key Vault REST API를 사용하여 Key Vault에서 비밀을 읽는 방법을 보여 줍니다.  Key Vault의 개요 페이지에 있는 필수 사항 섹션에 있는 Key Vault의 URL이 필요합니다.  이전 호출에서 얻은 액세스 토큰도 필요합니다. 

curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>" 

응답은 다음과 같습니다.

{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 

Key Vault에서 비밀을 검색한 후에는 이 비밀을 사용하여 이름과 암호가 필요한 서비스에 인증할 수 있습니다.

자원을 정리하세요

리소스를 정리할 준비가 되면 Azure Portal에 로그인하고, 리소스 그룹을 선택한 다음, 이 자습서의 프로세스에서 만든 리소스 그룹(예: mi-test)을 찾아 선택합니다. 리소스 그룹 삭제 명령을 사용하거나 PowerShell 또는 CLI를 통해 사용할 수 있습니다.

Linux VM 시스템 할당 관리 ID를 사용하여 리소스 관리자의 리소스 그룹에 액세스

이 자습서에서는 시스템 할당 ID를 만들고, Linux VM(Virtual Machine)에 할당한 다음, 해당 ID를 사용하여 Azure Resource Manager API에 액세스하는 방법을 설명합니다. 관리 서비스 ID는 Azure에서 자동으로 관리됩니다. 코드에 자격 증명을 포함할 필요 없이 Microsoft Entra 인증을 지원하는 서비스에 대한 인증을 사용하도록 설정합니다.

당신은 다음을 배우게 됩니다:

  • VM에 Azure 리소스 관리자에 대한 액세스 권한을 부여합니다.
  • VM의 시스템 할당 관리 ID를 사용하여 리소스 관리자에 액세스하여 액세스 토큰을 가져옵니다.
  1. 관리자 계정으로 Azure Portal 에 로그인합니다.

  2. Resource Groups(리소스 그룹) 탭으로 이동합니다.

  3. VM의 관리 ID 액세스 권한을 부여하려는 리소스 그룹을 선택합니다.

  4. 왼쪽 패널에서 액세스 제어(IAM)를 선택합니다.

  5. 추가를 선택한 다음, 역할 할당 추가를 선택합니다.

  6. 역할 탭에서 읽기 권한자를 선택합니다. 이 역할은 모든 리소스를 볼 수 있지만 변경할 수는 없습니다.

  7. 구성원 탭의 액세스 권한 할당 옵션에서 관리 ID를 선택한 다음, + 구성원 선택을 선택합니다.

  8. 적절한 구독이 구독 드롭다운에 나열되어 있는지 확인합니다. 리소스 그룹에 대해 모든 리소스 그룹을 선택합니다.

  9. ID 관리 드롭다운에서 Virtual Machine을 선택합니다.

  10. 선택 옵션의 드롭다운에서 VM을 선택한 다음, 저장을 선택합니다.

    관리 ID에 읽기 권한자 역할을 추가하는 방법을 보여 주는 스크린샷입니다.

액세스 토큰 가져오기

VM의 시스템 할당 관리 ID를 사용하고 리소스 관리자를 호출하여 액세스 토큰을 가져옵니다.

이러한 단계를 완료하려면 SSH 클라이언트가 필요합니다. Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다. SSH 클라이언트의 키를 구성하는 데 도움이 필요한 경우 Azure에서 Windows와 SSH 키를 사용하는 방법 또는 Azure에서 Linux VM에 대한 SSH 공개 및 개인 키 쌍을 만들고 사용하는 방법을 참조하세요.

  1. Azure Portal에서 Linux VM으로 이동합니다.
  2. 개요에서 연결을 선택합니다.
  3. 선택한 SSH 클라이언트를 사용하여 VM에 연결합니다.
  4. 터미널 창에서 를 사용하여 curlAzure 리소스 엔드포인트에 대한 로컬 관리 ID에 요청하여 Azure Resource Manager에 대한 액세스 토큰을 가져옵니다.   curl 액세스 토큰에 대한 요청은 다음과 같습니다.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

비고

매개 변수의 값은 resource Microsoft Entra ID에서 예상하는 값과 정확히 일치해야 합니다. 리소스 관리자 리소스 ID의 경우 URI에 후행 슬래시를 포함해야 합니다.

응답에는 Azure Resource Manager에 액세스하는 데 필요한 액세스 토큰이 포함됩니다.

응답:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

이 액세스 토큰을 사용하여 Azure Resource Manager에 액세스합니다. 예를 들어 이전에 이 VM 액세스 권한을 부여한 리소스 그룹의 세부 정보를 읽습니다. , <SUBSCRIPTION-ID>및 의 <RESOURCE-GROUP><ACCESS-TOKEN> 값을 이전에 만든 값으로 바꿉니다.

비고

URL은 대/소문자를 구분하므로 리소스 그룹의 이름을 지정할 때 이전에 사용한 것과 동일한 대/소문자를 사용하고 있는지 확인하고 에서 대문자 "G"를 resourceGroup사용하고 있는지 확인합니다.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

특정 리소스 그룹 정보와 함께 다시 응답:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"___location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Linux VM 사용자 할당 관리 ID를 사용하여 Resource Manager의 리소스 그룹에 액세스

이 자습서에서는 사용자 할당 ID를 만들고, Linux VM(가상 컴퓨터)에 할당한 다음, 해당 ID를 사용하여 Azure Resource Manager API에 액세스하는 방법을 설명합니다. 관리 서비스 ID는 Azure에서 자동으로 관리됩니다. 코드에 자격 증명을 포함할 필요 없이 Microsoft Entra 인증을 지원하는 서비스에 대한 인증을 사용하도록 설정합니다.

다음을 배우게 됩니다:

  • VM에 Azure Resource Manager에 대한 액세스 권한을 부여합니다.
  • VM의 시스템 할당 관리 ID를 사용하여 Resource Manager에 액세스하여 액세스 토큰을 가져옵니다.

az identity create를 사용하여 사용자 할당 관리 ID를 만듭니다. -g 매개 변수는 사용자 할당 관리 ID가 만들어진 리소스 그룹을 지정하고 -n 매개 변수는 그 이름을 지정합니다. <RESOURCE GROUP><UAMI NAME> 매개 변수 값을 원하는 값으로 바꾸세요.

중요합니다

사용자 할당 관리 ID를 만들 때 이름은 문자나 숫자로 시작해야 하며 영숫자, 하이픈(-), 밑줄(_)의 조합을 포함할 수 있습니다. 가상 머신 또는 가상 머신 확장 집합에 대한 할당이 제대로 작동하려면 이름은 24자로 제한됩니다. 자세한 내용은 FAQ 및 알려진 문제를 참조하세요.

az identity create -g <RESOURCE GROUP> -n <UAMI NAME>

응답에는 다음 예제와 유사하게 생성된 사용자 할당 관리 ID에 대한 세부 정보가 포함됩니다. id 사용자가 할당한 관리 ID의 값은 다음 단계에서 사용되므로 기록해 둡니다.

{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"id": "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"___location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Linux VM에 ID 할당Assign an identity to your Linux VM

사용자가 할당한 관리 ID는 여러 Azure 리소스의 클라이언트에서 사용할 수 있습니다. 다음 명령을 사용하여 사용자가 할당한 관리 ID를 단일 VM에 할당합니다. Id 매개 변수에 대해 -IdentityID 이전 단계에서 반환된 속성을 사용합니다.

az vm identity assign을 사용하여 사용자가 할당한 관리 ID를 Linux VM에 할당합니다. <RESOURCE GROUP><VM NAME> 매개 변수 값을 원하는 값으로 바꾸세요. id 이전 단계에서 반환된 속성을 매개 변수 값에 사용합니다--identities.

az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"

Azure Resource Manager에서 리소스 그룹에 대한 액세스 권한 부여Grant access to a resource group in Azure Resource Manager

관리 ID는 코드가 Microsoft Entra 인증을 지원하는 리소스 API에 인증하기 위해 액세스 토큰을 요청하는 데 사용할 수 있는 ID입니다. 이 자습서에서는 코드가 Azure Resource Manager API에 액세스합니다.

코드가 API에 액세스하려면 먼저 Azure Resource Manager의 리소스에 대한 ID 액세스 권한을 부여해야 합니다. 이 경우 VM이 포함된 리소스 그룹입니다. 사용자 환경에 맞게 및 <SUBSCRIPTION ID> 값을 <RESOURCE GROUP> 업데이트합니다. 또한 <UAMI PRINCIPALID>의 명령에서 principalId 반환된 속성으로 az identity create 바꿉니다.

az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "

응답에는 다음 예제와 유사하게 생성된 역할 할당에 대한 세부 정보가 포함됩니다.

{
  "id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "properties": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
  },
  "resourceGroup": "<RESOURCE GROUP>",
  "type": "Microsoft.Authorization/roleAssignments"
}

VM의 ID를 사용하여 액세스 토큰을 가져오고 이를 사용하여 Resource Manager를 호출합니다.

자습서의 나머지 부분에서는 이전에 만든 VM에서 작업합니다.

이러한 단계를 완료하려면 SSH 클라이언트가 필요합니다. Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다.

  1. Azure Portal에 로그인합니다.

  2. 포털에서 Virtual Machines 로 이동하여 Linux 가상 머신으로 이동한 후 개요에서 Connect(연결)를 클릭합니다. 문자열을 복사하여 VM에 연결합니다.

  3. 선택한 SSH 클라이언트를 사용하여 VM에 연결합니다. Windows를 사용하는 경우 Linux용 Windows 하위 시스템에서 SSH 클라이언트를 사용할 수 있습니다. SSH 클라이언트의 키를 구성하는 데 도움이 필요한 경우 Azure에서 Windows와 SSH 키를 사용하는 방법 또는 Azure에서 Linux VM에 대한 SSH 공개 및 개인 키 쌍을 만들고 사용하는 방법을 참조하세요.

  4. 터미널 창에서 CURL을 사용하여 IMDS(Azure Instance Metadata Service) ID 엔드포인트에 요청하여 Azure Resource Manager에 대한 액세스 토큰을 가져옵니다.

    액세스 토큰을 획득하기 위한 CURL 요청은 다음 예제에 나와 있습니다. <CLIENT ID>의 명령에서 clientId 반환된 속성으로 az identity create 바꿔 야 합니다.

    curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"
    

    비고

    매개 변수의 값은 resource Microsoft Entra ID에서 예상하는 값과 정확히 일치해야 합니다. Resource Manager 리소스 ID를 사용하는 경우 URI에 후행 슬래시를 포함해야 합니다.

    응답에는 Azure Resource Manager에 액세스하는 데 필요한 액세스 토큰이 포함됩니다.

    응답 예시

    {
    "access_token":"eyJ0eXAiOi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://management.azure.com",
    "token_type":"Bearer"
    } 
    
  5. 액세스 토큰을 사용하여 Azure Resource Manager에 액세스하고, 이전에 사용자가 할당한 관리 ID 액세스 권한을 부여한 리소스 그룹의 속성을 읽습니다. 를 <SUBSCRIPTION ID> 이전에 <RESOURCE GROUP> 지정한 값과 이전 단계에서 반환된 토큰으로 바꿔<ACCESS TOKEN>야 합니다.

    비고

    URL은 대/소문자를 구분하므로 리소스 그룹의 이름을 지정할 때 이전에 사용한 것과 정확히 동일한 대/소문자를 사용하고 에서 대문자 "G"를 resourceGroups사용해야 합니다.

    curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS TOKEN>" 
    

    응답에는 다음 예제와 유사한 특정 리소스 그룹 정보가 포함됩니다.

    {
    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest",
    "name":"DevTest",
    "___location":"westus",
    "properties":{"provisioningState":"Succeeded"}
    } 
    

더 알아보세요