1단원: 저장된 액세스 정책 및 공유 액세스 서명 만들기Lesson 1: Create stored access policy and shared access signature

이 단원에서는 Azure PowerShell 스크립트를 사용하여 저장된 액세스 정책을 통해 Azure Blob 컨테이너에 공유 액세스 서명을 만듭니다.In this lesson, you will use an Azure PowerShell script to create a shared access signature on an Azure blob container using a stored access policy.

참고

이 스크립트는 Azure PowerShell 5.0.10586을 사용하여 작성되었습니다.This script is written using Azure PowerShell 5.0.10586.

공유 액세스 서명은 컨테이너, Blob, 큐 또는 테이블에 대한 제한된 액세스 권한을 부여하는 URI입니다.A shared access signature is a URI that grants restricted access rights to containers, blobs, queues, or tables. 저장된 액세스 정책은 액세스 해지, 만료, 연장을 포함하여 서버 쪽에서 공유 액세스 서명에 대한 제어 수준을 추가로 제공합니다.A stored access policy provides an additional level of control over shared access signatures on the server side including revoking, expiring, or extending access. 이 새로운 향상된 기능을 사용하는 경우 최소한 읽기, 쓰기 및 나열 권한이 있는 컨테이너에 정책을 만들어야 합니다.When using this new enhancement, you need to create a policy on a container with at least read, write, and list rights.

Azure PowerShell, Azure Storage SDK, Azure REST API 또는 타사 유틸리티를 사용하여 저장된 액세스 정책과 공유 액세스 서명을 만들 수 있습니다.You can create a stored access policy and a shared access signature by using Azure PowerShell, the Azure Storage SDK, the Azure REST API, or a 3rd party utility. 이 자습서에서는 Azure PowerShell 스크립트를 사용하여 이 작업을 완료하는 방법을 보여 줍니다.This tutorial demonstrates how to use an Azure PowerShell script to complete this task. 스크립트는 리소스 관리자 배포 모델을 사용하며 다음과 같은 새 리소스를 만듭니다.The script uses the Resource Manager deployment model and creates the following new resources

  • 리소스 그룹Resource group

  • 저장소 계정Storage account

  • Azure Blob 컨테이너Azure blob container

  • SAS 정책SAS policy

이 스크립트는 먼저 여러 변수를 선언하여 위 리소스의 이름 및 다음 필수 입력 값의 이름을 지정합니다.This script starts by declaring a number of variables to specify the names for the above resources and the names of the following required input values:

  • 기타 리소스 개체의 이름 지정에 사용되는 접두사 이름A prefix name used in naming other resource objects

  • 구독 이름Subscription name

  • 데이터 센터 위치Data center location

참고

이 스크립트는 기존 ARM 또는 클래식 배포 모델 리소스 중 하나를 사용할 수 있도록 작성되었습니다.This script is written in such a way to allow you to use either existing ARM or classic deployment model resources.

스크립트는 2단원: 공유 액세스 서명을 사용하여 SQL Server 자격 증명 만들기에서 사용할 적절한 CREATE CREDENTIAL 문을 생성하여 작업을 완료합니다.The script completes by generating the appropriate CREATE CREDENTIAL statement that you will use in Lesson 2: Create a SQL Server credential using a shared access signature. 이 문은 클립보드에 복사되며 확인할 수 있도록 콘솔에 출력됩니다.This statement is copied to your clipboard for you and is output to the console for you to see.

컨테이너에 정책을 만들고 SAS(공유 액세스 서명) 키를 생성하려면 다음 단계를 따르세요.To create a policy on container and generate a Shared Access Signature (SAS) key, follow these steps:

  1. Windows PowerShell 또는 Windows PowerShell ISE를 엽니다(위의 버전 요구 사항 참조).Open Window PowerShell or Windows PowerShell ISE (see version requirements above).

  2. 다음 스크립트를 편집한 후 실행합니다.Edit and then execute the following script.

    \<#   
    This script uses the Azure Resource model and creates a new ARM storage account.  
    Modify this script to use an existing ARM or classic storage account   
    using the instructions in comments within this script  
    #>  
    # Define global variables for the script  
    $prefixName = '<a prefix name>'  # used as the prefix for the name for various objects  
    $subscriptionName='<your subscription name>'   # the name  of subscription name you will use  
    $locationName = '<a data center location>'  # the data center region you will use  
    $storageAccountName= $prefixName + 'storage' # the storage account name you will create or use  
    $containerName= $prefixName + 'container'  # the storage container name to which you will attach the SAS policy with its SAS token  
    $policyName = $prefixName + 'policy' # the name of the SAS policy  
    
    \<#   
    Using Azure Resource Manager deployment model  
    Comment out this entire section and use the classic storage account name to use an existing classic storage account  
    #>  
    
    # Set a variable for the name of the resource group you will create or use  
    $resourceGroupName=$prefixName + 'rg'   
    
    # adds an authenticated Azure account for use in the session   
    Login-AzureRmAccount    
    
    # set the tenant, subscription and environment for use in the rest of   
    Set-AzureRmContext -SubscriptionName $subscriptionName   
    
    # create a new resource group - comment out this line to use an existing resource group  
    New-AzureRmResourceGroup -Name $resourceGroupName -Location $locationName   
    
    # Create a new ARM storage account - comment out this line to use an existing ARM storage account  
    New-AzureRmStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName   
    
    # Get the access keys for the ARM storage account  
    $accountKeys = Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName  
    
    # Create a new storage account context using an ARM storage account  
    $storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value 
    
    \<#  
    Using the Classic deployment model  
    Use the following four lines to use an existing classic storage account  
    #>  
    #Classic storage account name  
    #Add-AzureAccount  
    #Select-AzureSubscription -SubscriptionName $subscriptionName #provide an existing classic storage account  
    #$accountKeys = Get-AzureStorageKey -StorageAccountName $storageAccountName  
    #$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys.Primary  
    
    # The remainder of this script works with either the ARM or classic sections of code above  
    
    # Creates a new container in blob storage  
    $container = New-AzureStorageContainer -Context $storageContext -Name $containerName  
    $cbc = $container.CloudBlobContainer  
    
    # Sets up a Stored Access Policy and a Shared Access Signature for the new container  
    $permissions = $cbc.GetPermissions();  
    $policyName = $policyName  
    $policy = new-object 'Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy'  
    $policy.SharedAccessStartTime = $(Get-Date).ToUniversalTime().AddMinutes(-5)  
    $policy.SharedAccessExpiryTime = $(Get-Date).ToUniversalTime().AddYears(10)  
    $policy.Permissions = "Read,Write,List,Delete"  
    $permissions.SharedAccessPolicies.Add($policyName, $policy)  
    $cbc.SetPermissions($permissions);  
    
    # Gets the Shared Access Signature for the policy  
    $policy = new-object 'Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy'  
    $sas = $cbc.GetSharedAccessSignature($policy, $policyName)  
    Write-Host 'Shared Access Signature= '$($sas.Substring(1))''  
    
    # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature  
    Write-Host 'Credential T-SQL'  
    $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.Uri,$sas.Substring(1)   
    $tSql | clip  
    Write-Host $tSql  
    
  3. 스크립트가 완료되면 다음 단원에서 사용할 수 있도록 클립보드에 CREATE CREDENTIAL 문이 있습니다.After the script completes, the CREATE CREDENTIAL statement will be in your clipboard for use in the next lesson.

다음 단원:Next Lesson:

2단원: 공유 액세스 서명을 사용하여 SQL Server 자격 증명 만들기Lesson 2: Create a SQL Server credential using a shared access signature

관련 항목:See Also

공유 액세스 서명, 1부: SAS 모델 이해Shared Access Signatures, Part 1: Understanding the SAS Model
컨테이너 만들기Create Container
컨테이너 ACL 설정Set Container ACL
컨테이너 ACL 가져오기Get Container ACL