Lezione 1: Creare criteri di accesso archiviati e una firma di accesso condivisoLesson 1: Create stored access policy and shared access signature

In questa lezione si userà uno script Azure PowerShell per creare una firma di accesso condiviso in un contenitore BLOB di Azure tramite criteri di accesso archiviati.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.

Nota

Questo script è stato scritto con Azure PowerShell 5.0.10586.This script is written using Azure PowerShell 5.0.10586.

Una firma di accesso condivisa è un URI che concede diritti di accesso limitati a contenitori, BLOB, code o tabelle.A shared access signature is a URI that grants restricted access rights to containers, blobs, queues, or tables. I criteri di accesso archiviati garantiscono un livello di controllo aggiuntivo sulle firme di accesso condivise sul lato server, ad esempio revoca, scadenza ed estensione dei diritti di accesso.A stored access policy provides an additional level of control over shared access signatures on the server side including revoking, expiring, or extending access. Per usare questi nuovi miglioramenti, è necessario creare in un contenitore criteri con almeno diritti di lettura, scrittura ed elenco.When using this new enhancement, you need to create a policy on a container with at least read, write, and list rights.

È possibile creare criteri di accesso archiviati e una firma di accesso condiviso usando Azure PowerShell, Azure Storage SDK, l'API REST di Azure o un'utilità di terze parti.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. Questa esercitazione illustra come usare uno script Azure PowerShell per completare questa attività.This tutorial demonstrates how to use an Azure PowerShell script to complete this task. Lo script usa il modello di distribuzione Resource Manager e crea le nuove risorse seguentiThe script uses the Resource Manager deployment model and creates the following new resources

  • Gruppo di risorseResource group

  • Account di archiviazioneStorage account

  • Contenitore BLOB di AzureAzure blob container

  • Criteri di firma di accesso condivisoSAS policy

Questo script inizia con la dichiarazione di variabili con le quali specificare i nomi per le risorse indicate sopra e i nomi dei valori di input necessari seguenti: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:

  • Nome di prefisso usato nei nomi di altri oggetti risorsaA prefix name used in naming other resource objects

  • Nome sottoscrizioneSubscription name

  • Ubicazione data centerData center location

Nota

Questo script viene scritto in modo da consentire l'uso di Azure Resource Manager esistente o di risorse classiche del modello di distribuzione.This script is written in such a way to allow you to use either existing ARM or classic deployment model resources.

Lo script viene completato generando l'istruzione CREATE CREDENTIAL appropriata che sarà usata nella Lezione 2: Creare credenziali di SQL Server usando una firma di accesso condiviso.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. Questa istruzione viene copiata negli Appunti e viene visualizzata nella console.This statement is copied to your clipboard for you and is output to the console for you to see.

Per creare i criteri per il contenitore e generare una chiave di firma di accesso condivisa, seguire questa procedura:To create a policy on container and generate a Shared Access Signature (SAS) key, follow these steps:

  1. Aprire Windows PowerShell o Windows PowerShell ISE (vedere i requisiti della versione precedenti).Open Window PowerShell or Windows PowerShell ISE (see version requirements above).

  2. Modificare ed eseguire la query seguente.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. Dopo aver completato lo script, l'istruzione CREATE CREDENTIAL sarà aggiunta agli Appunti perché sia possibile usarla nella lezione successiva.After the script completes, the CREATE CREDENTIAL statement will be in your clipboard for use in the next lesson.

Lezione successiva:Next Lesson:

Lezione 2: Creare credenziali di SQL Server usando una firma di accesso condivisoLesson 2: Create a SQL Server credential using a shared access signature

Vedere ancheSee Also

Uso delle firme di accesso condiviso, parte 1: conoscere il modello di firma di accesso condivisoShared Access Signatures, Part 1: Understanding the SAS Model
Create ContainerCreate Container
Set Container ACLSet Container ACL
Get Container ACLGet Container ACL