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

Azure 리소스에 대한 관리 ID는 Microsoft Entra ID의 기능입니다. Azure 리소스에 대한 관리 ID를 지원하는 각 Azure 서비스는 자체 타임라인을 따릅니다. 시작하기 전에 리소스의 관리 ID 가용성 상태와 알려진 문제를 검토하세요.

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

  • 스토리지 계정 만들기
  • 스토리지 계정에 Blob 컨테이너 만들기
  • Azure Storage 컨테이너에 대한 Linux VM의 관리 ID 액세스 권한 부여
  • 액세스 토큰 가져오기 및 액세스 토큰을 사용하여 Azure Storage 호출

필수 조건

이 자습서의 CLI 스크립트 예제는 두 가지 옵션을 통해 실행할 수 있습니다.

스토리지 계정 만들기

이 섹션에서는 스토리지 계정을 만듭니다.

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

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

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

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

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

  6. 만들기를 실행합니다.

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

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

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

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

  2. Blob Service 아래에서 컨테이너를 선택합니다.

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

  4. 새 컨테이너 아래에서 컨테이너에 대한 이름을 입력하고 공용 액세스 수준 아래에서 기본값을 유지합니다.

    스토리지 컨테이너 만들기 화면을 보여 주는 스크린샷.

  5. 선택한 편집기를 사용하여 로컬 컴퓨터에서 hello world.txt라는 파일을 만듭니다. 파일을 열고 "Hello world! :)"라는 텍스트(따옴표 제외)를 추가한 다음, 저장합니다.

  6. 컨테이너 이름을 클릭한 다음, 업로드를 클릭하여 새로 만든 컨테이너에 파일을 추가합니다.

  7. Blob 업로드 창의 파일 아래에서 폴더 아이콘을 선택하고 로컬 컴퓨터에서 hello_world.txt라는 파일을 찾고, 파일을 선택한 다음, 업로드를 선택합니다.

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

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

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

세부 단계에 대해서는 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를 활성화하여 Azure Storage에 액세스하는 방법을 알아보았습니다. Azure Storage에 대한 자세한 내용은 다음을 참조하세요.