다음을 통해 공유


Azure CLI를 사용하여 컨테이너 또는 Blob에 대한 사용자 위임 SAS 만들기

SAS(공유 액세스 서명)를 사용하면 스토리지 계정의 컨테이너 및 Blob에 대한 제한된 액세스 권한을 부여할 수 있습니다. SAS를 만들 때 클라이언트에서 액세스할 수 있는 Azure Storage 리소스, 해당 리소스에 대한 사용 권한, SAS의 유효 기간 등의 해당 제약 조건을 지정합니다.

모든 SAS는 키로 서명됩니다. 다음 두 가지 방법 중 하나로 SAS에 서명할 수 있습니다.

  • Microsoft Entra 자격 증명을 사용하여 만들어진 키를 사용합니다. Microsoft Entra 자격 증명으로 서명된 SAS는 사용자 위임 SAS입니다. 사용자 위임 SAS를 만드는 클라이언트에는 Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey 작업을 포함하는 Azure RBAC 역할이 할당되어야 합니다. 자세한 내용은 사용자 위임 SAS 만들기를 참조하세요.
  • 스토리지 계정 키를 사용합니다. 서비스 SAS계정 SAS는 모두 스토리지 계정 키로 서명됩니다. 서비스 SAS를 만드는 클라이언트는 계정 키에 대한 직접 액세스 권한이 있거나 Microsoft.Storage/storageAccounts/listkeys/action 권한이 할당되어야 합니다. 자세한 내용은 서비스 SAS 만들기 또는 계정 SAS 만들기를 참조하세요.

참고 항목

사용자 위임 SAS는 스토리지 계정 키로 서명된 SAS에 뛰어난 보안을 제공합니다. 가능하면 사용자 위임 SAS를 사용하는 것이 좋습니다. 자세한 내용은 SAS(공유 액세스 서명)를 사용하여 데이터에 대한 제한된 액세스 권한 부여를 참조하세요.

이 문서에서는 Microsoft Entra 자격 증명을 사용하여 Azure CLI로 컨테이너 또는 Blob에 대한 사용자 위임 SAS를 만드는 방법을 보여 줍니다.

사용자 위임 SAS 정보

컨테이너 또는 Blob에 액세스하기 위한 SAS 토큰은 Microsoft Entra 자격 증명 또는 계정 키를 사용하여 보호될 수 있습니다. Microsoft Entra 자격 증명으로 보안이 설정된 SAS를 사용자 위임 SAS라고 합니다. 이는 SAS에 서명하는 데 사용되는 OAuth 2.0 토큰이 사용자를 대신하여 요청되기 때문입니다.

되도록이면 쉽게 손상될 수 있는 계정 키 대신 보안 모범 사례에 따라 Microsoft Entra 자격 증명을 사용하는 것이 좋습니다. 애플리케이션 디자인에 공유 액세스 서명이 필요한 경우 Microsoft Entra 자격 증명을 사용하여 뛰어난 보안을 위해 사용자 위임 SAS를 만듭니다. 사용자 위임 SAS에 대한 자세한 내용은 사용자 위임 SAS 만들기를 참조하세요.

주의

유효한 SAS를 소유한 클라이언트는 해당 SAS에서 허용한 스토리지 계정의 데이터에 액세스할 수 있습니다. 악의적이거나 의도하지 않은 사용으로부터 SAS를 보호하는 것이 중요합니다. SAS 배포는 신중해야 하고, 손상된 SAS를 철회하는 계획을 세워야 합니다.

공유 액세스 서명에 대한 자세한 내용은 SAS(공유 액세스 서명)를 사용하여 Azure Storage 리소스에 대한 제한된 액세스 권한 부여를 참조하세요.

Azure CLI 최신 버전 설치

Azure CLI를 사용하여Microsoft Entra 자격 증명으로 SAS를 보호하려면 먼저 최신 버전의 Azure CLI를 설치했는지 확인합니다. Azure CLI를 설치하는 방법에 대한 자세한 내용은 Azure CLI 설치를 참조하세요.

Azure CLI를 사용하여 사용자 위임 SAS를 만들려면 버전 2.0.78 이상을 설치했는지 확인합니다. 설치된 버전을 확인하려면 az --version 명령을 사용합니다.

Microsoft Entra 자격 증명으로 로그인

Microsoft Entra 자격 증명을 사용하여 Azure CLI에 로그인합니다. 자세한 내용은 Azure CLI로 로그인을 참조하세요.

Azure RBAC를 사용하여 권한 할당

Azure PowerShell에서 사용자 위임 SAS를 만들려면 Azure CLI에 로그인하는 데 사용되는 Microsoft Entra 계정에 Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey 작업을 포함하는 역할이 할당되어야 합니다. 이 권한이 있으면 Microsoft Entra 계정이 사용자 위임 키를 요청할 수 있습니다. 사용자 위임 키는 사용자 위임 SAS에 서명하는 데 사용됩니다. Microsoft.Storage/storageAccounts/BlobServices/generateUserDelegationKey 작업을 제공하는 역할은 스토리지 계정, 리소스 그룹 또는 구독 수준에서 할당되어야 합니다.

Azure 역할을 Microsoft Entra 보안 주체에 할당할 수 있는 권한이 충분하지 않은 경우 계정 소유자 또는 관리자에게 필요한 권한을 할당하도록 요청해야 할 수 있습니다.

다음 예제에서는 Microsoft.Storage/storageAccounts/BlobServices/generateUserDelegationKey 작업을 포함하는 Storage Blob 데이터 기여자 역할을 할당합니다. 역할의 범위는 스토리지 계정 수준에서 지정됩니다.

꺾쇠 괄호로 묶인 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Microsoft.Storage/storageAccounts/BlobServices/generateUserDelegationKey 작업을 포함하는 기본 제공 역할에 대한 자세한 내용은 Azure 기본 제공 역할을 참조하세요.

Microsoft Entra 자격 증명을 사용하여 SAS 보안

Azure CLI를 사용하여 사용자 위임 SAS를 만들면 SAS에 서명하는 데 사용되는 사용자 위임 키가 암시적으로 만들어집니다. SAS에 대해 지정하는 시작 시간 및 만료 시간은 사용자 위임 키의 시작 시간 및 만료 시간으로도 사용됩니다.

사용자 위임 키가 유효한 최대 간격은 시작 날짜로부터 7일이므로 시작 시간으로부터 7일 이내에 SAS 만료 시간을 지정해야 합니다. 사용자 위임 키가 만료된 후에는 SAS가 유효하지 않으므로 만료 시간이 7일 이상인 SAS도 7일 동안만 유효합니다.

사용자 위임 SAS를 만들 때 --auth-mode login--as-user parameters가 필요합니다. Azure Storage에 대한 요청이 Azure AD 자격 증명으로 승인되도록 --auth-mode 매개 변수에 login을 지정합니다. 반환된 SAS가 사용자 위임 SAS여야 함을 표시하려면 --as-user 매개 변수를 지정합니다.

컨테이너에 대한 사용자 위임 SAS 만들기

Azure CLI를 사용하여 컨테이너에 대한 사용자 위임 SAS를 만들려면 az storage container generate-sas 명령을 호출합니다.

컨테이너에서 사용자 위임 SAS에 지원되는 권한에는 추가, 만들기, 삭제, 나열, 읽기 및 쓰기가 포함됩니다. 권한은 단독으로 또는 결합하여 지정할 수 있습니다. 이러한 권한에 대한 자세한 내용은 사용자 위임 SAS 만들기를 참조하세요.

다음 예는 컨테이너에 대한 사용자 위임 SAS 토큰을 반환합니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

반환된 사용자 위임 SAS 토큰은 다음과 유사합니다.

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

참고 항목

Blob Storage에서 반환된 SAS 토큰에는 URL 쿼리 문자열의 구분 기호 문자(‘?’)가 포함되지 않습니다. 리소스 URL에 SAS 토큰을 추가하는 경우 구분 기호 문자도 추가해야 합니다.

Blob에 대한 사용자 위임 SAS 만들기

Azure CLI를 사용하여 Blob에 대한 사용자 위임 SAS를 만들려면 az storage Blob generate-sas 명령을 호출합니다.

Blob에서 사용자 위임 SAS에 지원되는 권한에는 추가, 만들기, 삭제, 읽기 및 쓰기가 포함됩니다. 권한은 단독으로 또는 결합하여 지정할 수 있습니다. 이러한 권한에 대한 자세한 내용은 사용자 위임 SAS 만들기를 참조하세요.

다음 구문은 Blob에 대한 사용자 위임 SAS를 반환합니다. 예제에서는 SAS 토큰이 추가된 Blob URI를 반환하는 --full-uri 매개 변수를 지정합니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

반환된 사용자 위임 SAS URI는 다음과 유사합니다.

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

참고 항목

Azure CLI에서 반환된 SAS 토큰에는 URL 쿼리 문자열에 대한 구분 기호 문자(‘?’)가 포함되지 않습니다. 리소스 URL에 SAS 토큰을 추가하는 경우 SAS 토큰을 추가하기 전에 리소스 URL에 구분 기호 문자를 추가해야 합니다.

사용자 위임 SAS는 저장된 액세스 정책을 사용한 권한 정의를 지원하지 않습니다.

사용자 위임 SAS 철회

Azure CLI에서 사용자 위임 SAS를 철회하려면 az storage account revoke-delegation-keys 명령을 호출합니다. 이 명령은 지정된 스토리지 계정과 연결된 모든 사용자 위임 키를 철회합니다. 해당 키와 연결된 모든 공유 액세스 서명이 무효화됩니다.

꺾쇠 괄호로 묶인 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Important

사용자 위임 키와 Azure 역할 할당은 모두 Azure Storage에서 캐시되므로 철회 프로세스를 시작하는 시점과 기존 사용자 위임 SAS가 무효화되는 시점 사이에 지연이 있을 수 있습니다.

다음 단계