Python을 사용하여 컨테이너 또는 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(공유 액세스 서명)를 사용하여 데이터에 대한 제한된 액세스 권한 부여를 참조하세요.

이 문서에서는 스토리지 계정 키를 사용하여 Python용 Blob Storage 클라이언트 라이브러리를 사용하여 컨테이너 또는 Blob에 대한 서비스 SAS를 만드는 방법을 보여 줍니다.

서비스 SAS 정보

서비스 SAS는 스토리지 계정 액세스 키로 서명됩니다. 서비스 SAS는 Blob Storage와 같은 단일 Azure Storage 서비스의 리소스에 대한 액세스 권한을 위임합니다.

저장된 액세스 정책을 사용하여 SAS의 사용 권한 및 기간을 정의할 수도 있습니다. 기존에 저장된 액세스 정책의 이름을 제공하는 경우 해당 정책은 SAS와 연결됩니다. 저장된 액세스 정책에 대한 자세한 내용은 저장된 액세스 정책 정의를 참조하세요. 저장된 액세스 정책이 제공되지 않으면 이 문서의 코드 예제에서는 SAS에 대한 사용 권한 및 기간을 정의하는 방법을 보여 줍니다.

서비스 SAS 만들기

앱의 요구 사항에 따라 컨테이너 또는 Blob에 대한 서비스 SAS를 만들 수 있습니다.

다음 메서드를 사용하여 컨테이너 리소스에 대한 제한된 액세스를 위임하는 서비스 SAS를 만들 수 있습니다.

SAS에 서명하는 데 사용되는 스토리지 계정 액세스 키는 account_key 인수로 메서드에 전달됩니다. 허용되는 권한은 메서드에 permission 인수로 전달되고 ContainerSasPermissions 클래스에 정의됩니다.

다음 코드 예제에서는 컨테이너 리소스에 대해 읽기 권한이 있는 서비스 SAS를 만드는 방법을 보여 줍니다.

def create_service_sas_container(self, container_client: ContainerClient, account_key: str):
    # Create a SAS token that's valid for one day, as an example
    start_time = datetime.datetime.now(datetime.timezone.utc)
    expiry_time = start_time + datetime.timedelta(days=1)

    sas_token = generate_container_sas(
        account_name=container_client.account_name,
        container_name=container_client.container_name,
        account_key=account_key,
        permission=ContainerSasPermissions(read=True),
        expiry=expiry_time,
        start=start_time
    )

    return sas_token

서비스 SAS를 사용하여 클라이언트 개체에 권한 부여

서비스 SAS를 사용하면 SAS에서 부여한 권한에 따라 컨테이너 또는 Blob에서 작업을 수행하도록 클라이언트 개체에 권한을 부여할 수 있습니다.

다음 코드 예제에서는 이전 예제에서 만든 서비스 SAS를 사용하여 ContainerClient 개체에 권한을 부여하는 방법을 보여 줍니다. 이 클라이언트 개체는 SAS에서 부여한 권한에 따라 컨테이너 리소스에 작업을 수행하는 데 사용할 수 있습니다.

# The SAS token string can be appended to the resource URL with a ? delimiter
# or passed as the credential argument to the client constructor
sas_url = f"{container_client.url}?{sas_token}"

# Create a ContainerClient object with SAS authorization
container_client_sas = ContainerClient.from_container_url(container_url=sas_url)

리소스

Python용 Azure Blob Storage 클라이언트 라이브러리를 사용하는 방법에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

코드 샘플

클라이언트 라이브러리 리소스

참고 항목