Condividi tramite


Ottenere le chiavi dell'account di archiviazione

 

L'operazione Get Storage Keys restituisce le chiavi di accesso primaria e secondaria per l'account di archiviazione specificato.

Richiesta

La richiesta di Get Storage Keys può essere specificata come indicato di seguito. Sostituire <subscription-id> con l'ID sottoscrizione e <service-name> con il nome dell'account di archiviazione.

Metodo URI della richiesta
GET https://management.core.windows.net/<subscription-id>/services/storageservices/<service-name>/keys

È necessario verificare che la richiesta eseguita al servizio di gestione sia sicura. Per ulteriori dettagli, vedere l'autenticazione di richieste di gestione del servizio.

Parametri URI

Nessuna.

Intestazioni della richiesta

La tabella seguente descrive le intestazioni della richiesta.

Intestazione della richiesta Descrizione
x-ms-version Obbligatorio. Specifica la versione dell'operazione da usare per questa richiesta. Questa intestazione deve essere impostata su 2009-10-01 o versione successiva. Per ulteriori informazioni sulle intestazioni di controllo delle versioni, vedere il controllo delle versioni di Service Management.

Corpo della richiesta

Nessuna.

Risposta

Nella risposta sono inclusi un codice di stato HTTP, un set di intestazioni per la risposta e il corpo di una risposta.

Codice di stato

Un'operazione completata correttamente restituisce 200 (OK). Per informazioni sui codici di stato, vedere stato di gestione del servizio e i codici di errore.

Intestazioni della risposta

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

Intestazione della risposta Descrizione
x-ms-request-id Valore che identifica in modo univoco una richiesta eseguita nel servizio di gestione.

Corpo della risposta

Il formato del corpo della risposta è il seguente:

  
<?xml version="1.0" encoding="utf-8"?> <StorageService xmlns="https://schemas.microsoft.com/windowsazure"> <Url>storage-service-url</Url> <StorageServiceKeys> <Primary>primary-key</Primary> <Secondary>secondary-key</Secondary> </StorageServiceKeys> </StorageService>  
  

Nella tabella indicata di seguito vengono descritti gli elementi del corpo della risposta.

Nome elemento Descrizione
URL URI della richiesta API di gestione dei servizi usato per eseguire le richieste Recupero delle proprietà dell'account di archiviazione nell'account di archiviazione.
Principale Chiave di accesso primaria dell'account di archiviazione.
Secondario Chiave di accesso secondaria dell'account di archiviazione.

Osservazioni

Usare le chiavi di archiviazione restituite dall'operazione Get Storage Account Keys per accedere agli endpoint del servizio BLOB, di accodamento e tabelle per l'archiviazione.

Esempio

Il programma di esempio seguente accetta l'ID sottoscrizione, un'identificazione personale del certificato di gestione associato, la stringa di versione dell'operazione e il nome dell'account di archiviazione, quindi visualizza le chiavi dell'account di archiviazione restituite nella console. Inizializzare le variabili msVersion, subscriptionId, thumbprint e serviceName con valori personalizzati per eseguire il codice di esempio.

using System; using System.Collections.Generic; using System.Net; using System.Security.Cryptography.X509Certificates; using System.Xml; using System.Xml.Linq; class Program { static void Main(string[] args) { string msVersion = "2011-10-01"; string subscriptionId = "subscription-id-guid"; string thumbprint = "certificate-thumbprint"; string serviceName = "storage-service-name"; try { // Obtain the certificate with the specified thumbprint X509Certificate2 certificate = GetCertificate(thumbprint); GetStorageAccountKeysExample( subscriptionId, certificate, msVersion, serviceName); } catch (Exception ex) { Console.WriteLine("Exception caught in Main:"); Console.WriteLine(ex.Message); } } public static X509Certificate2 GetCertificate(string thumbprint) { List<StoreLocation> locations = new List<StoreLocation> { StoreLocation.CurrentUser, StoreLocation.LocalMachine }; foreach (var location in locations) { X509Store store = new X509Store("My", location); try { store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection certificates = store.Certificates.Find( X509FindType.FindByThumbprint, thumbprint, false); if (certificates.Count == 1) { return certificates[0]; } } finally { store.Close(); } } throw new ArgumentException(string.Format( "A certificate with thumbprint '{0}' could not be located.", thumbprint)); } public static void GetStorageAccountKeysExample( string subscriptionId, X509Certificate2 certificate, string version, string serviceName) { string uriFormat = "https://management.core.windows.net/{0}/services/storageservices/{1}/keys"; Uri uri = new Uri(String.Format(uriFormat, subscriptionId, serviceName)); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Method = "GET"; request.Headers.Add("x-ms-version", version); request.ClientCertificates.Add(certificate); request.ContentType = "application/xml"; XDocument responseBody = null; HttpStatusCode statusCode; HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { // GetResponse throws a WebException for 400 and 500 status codes response = (HttpWebResponse)ex.Response; } statusCode = response.StatusCode; if (response.ContentLength > 0) { using (XmlReader reader = XmlReader.Create(response.GetResponseStream())) { responseBody = XDocument.Load(reader); } } response.Close(); if (statusCode.Equals(HttpStatusCode.OK)) { XNamespace wa = "https://schemas.microsoft.com/windowsazure"; XElement storageService = responseBody.Element(wa + "StorageService"); Console.WriteLine( "Storage Account Keys for {0}:{1}{2}", serviceName, Environment.NewLine, storageService.ToString(SaveOptions.OmitDuplicateNamespaces)); } else { Console.WriteLine("Call to Get Storage Account Keys returned an error:"); Console.WriteLine("Status Code: {0} ({1}):{2}{3}", (int)statusCode, statusCode, Environment.NewLine, responseBody.ToString(SaveOptions.OmitDuplicateNamespaces)); } return; } }  
  

Quando viene eseguito, l'output del programma risulterà simile all'esempio seguente:

Storage Account Keys for myexamplestorage1: <StorageService xmlns="https://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <Url>https://management.core.windows.net/01234567-89ab-cdef-0123-456789abcdef/services/storageservices/myexamplestorage1</Url> <StorageServiceKeys> <Primary>XrmGWqu9qpgKX5G3lf+V5Bc0nFIGjGWiWhHTdMxkA5Mb4WjJ0rDV+3USWW/6fAWCrszrkr2+JUb1c5mxQdq4nw==</Primary> <Secondary>VuXywhZaNbkh//SN70yL1w6na2H1FUOvjukSOAReQ6QM4kHNY7LmQUhgENw6Tp/SBz4y65R3Y5L5c5+zqXNvVA==</Secondary> </StorageServiceKeys> </StorageService>