Storage Account: AzCopy 인증 방식 및 사용법 알아 보기 #1

Agenda

  1. AzCopy 인증 방식 알아 보기
    • Microsoft Entra ID 인증 방식
      • Authorize a user identity
      • Authorize a managed identity
      • Authorize by using a system-wide managed identity # Skip
      • Authorize by using a user-assigned managed identity # Skip
      • Authorize a service principal # Skip
    • Storage Account SAS Token 인증 방식 # Skip

AzCopy 인증 방식 알아 보기

사전 준비

  1. 테스트용 Storage Container 만들기

참고:
az storage account create
az storage container
Quickstart: Create, download, and list blobs with Azure CLI

# Variables
$RESOURCE_GROUP = "YourResourceGroupName"
$LOCATION = "Location"
$STORAGE_ACCOUNT = "YourStorageAccountName"
$CONTAINER = "YourContainerName"

# Create a resource group
az group create `
    --name $RESOURCE_GROUP `
    --location $LOCATION

# Create a storage account
az storage account create `
    --name $STORAGE_ACCOUNT `
    --resource-group $RESOURCE_GROUP `
    --location $LOCATION `
    --sku Standard_LRS `
    --encryption-services blob
	
# Retrieve storage account details and convert the output to JSON
$STORAGE_ACCOUNT_INFO = az storage account show `
    --resource-group $RESOURCE_GROUP `
    --name $STORAGE_ACCOUNT | ConvertFrom-Json

# Save the storage account ID to a variable
$STORAGE_ACCOUNT_ID = $STORAGE_ACCOUNT_INFO.id

# Create a container
$USER_ID=az ad signed-in-user show --query id -o tsv

az role assignment create `
--role "Storage Blob Data Contributor" `
--assignee $USER_ID `
--scope $STORAGE_ACCOUNT_ID

az storage container create `
--account-name $STORAGE_ACCOUNT `
--name $CONTAINER `
--auth-mode login
(1) blob container 확인

Microsoft Entra ID 인증 방식

Authorize a user identity

Microsoft Entra ID 사용자 계정을 사용하여 AzCopy 에 인증하는 방식이다.

사용자의 자격증명을 직접 사용하여 보다 세밀한 접근 제어를 구현할 수 있다. 주로 개발 및 테스트 환경에서 사용자가 직접 작업을 관리할 필요가 있을 때 적합하다.

  • 개발자가 개인적으로 데이터를 Azure Storage 로 이동 및 백업을 실시하는 경우
  • 테스트 환경에서 개별적인 데이터 접근 및 관리가 필요한 경우

참고:
Authorize access to blobs and files with AzCopy and Microsoft Entra ID
azcopy login

azcopy login [flag] 명령어를 실행할 때 기본값으로 동작을 환경 변수로 지정할 수 있다 (Optional)

$env:AZCOPY_AUTO_LOGIN_TYPE="DEVICE"

# Authorize with Entra User ID
azcopy login

나는 GitHub 계정을 사용해서 Azure 테넌트를 사용하고 있는데, User 인증에서 실패 했다.

해결 방법으로는 azcopy login --tenant-id [YourTanatId] 옵션을 사용하면 정상적으로 User 인증이 가능하다.

$AZ_INFO=az account show | convertfrom-json
$AZ_TENANT_ID=$AZ_INFO.tenantId

azcopy login --tenant-id $AZ_TENANT_ID
(2) User 인증 실패 예
(3) Tenant ID 옵션으로 인증 성공

Authorize a managed identity

Azure 에 의해 관리되는 Managed ID 를 사용하여 사용자의 개입 없이 서비스나 앱의 인증을 자동으로 처리할 수 있다.

주로 Azure Virtual Machine, Functions 와 같은 서비스에서 사용된다. 인증 과정에서 사용자의 개입이 필요 없고, 보안적인 측면에서 안전한 장점이 있다. 대규모 앱, 프로덕션 환경, 자동화 스크립트를 사용할 때 유용하다.

  • Azure 에서 호스팅되는 앱에서 데이터 처리를 자동화하는 경우
  • Azure VM 에서 Azure Storage 에 접근하고 작업을 자동화 하는 경우
  • 프로덕션 환경에서 데이터 관리 및 백업을 자동화 하는 경우

사전 준비

  1. Azure Virtual Machine (Windows) 배포
  2. System Assigned Managed ID 설정
  3. Storage Account IAM 설정에서 Azure VM Managed ID 권한 설정
  4. Azure Virtual Machine 에 azcopy.exe 설치 및 환경 변수 설정
azcopy.exe 설치 및 환경 변수 설정
(1) Azure VM Managed ID 설정
(2) Storage Account IAM 설정
(2) azcopy.exe 설치, 환경 병수 설정 및 확인

Azure VM 에서 AzCopy 동작 확인

Tip. Permission 문제로 Failed 한 경우, Storage Account 의 IAM 설정을 다시 확인한다.

(1) azcopy list <blob endpoint> 실패 및 성공 예시
(2-1) azcopy 업로드 예시
(2-2) azcopy list 로 업로드 확인
(2-3) Azure Portal 에서 업로드 확인