Получение ключей учетной записи хранения

 

Get Storage Keys Операция возвращает ключи первичного и вторичного доступа для указанной учетной записи хранилища.

Запрос

Get Storage Keys Можно составить следующим образом. Замените <subscription-id> своим Идентификатором подписки и <service-name> с именем учетной записи хранилища.

Метод URI запроса
GET https://management.core.windows.net/<subscription-id>/services/storageservices/<service-name>/keys

Необходимо убедиться, что запрос к службе управления безопасен. Дополнительные сведения см. в разделе Проверка подлинности запросов управления службами.

Параметры URI

Отсутствует.

Заголовки запроса

В следующей таблице описаны заголовки запросов.

Заголовок запроса Описание
x-ms-version Обязательно. Задает версию операции, используемой для этого запроса. Этот заголовок должен быть установлен 2009-10-01 или более поздней версии. Дополнительные сведения об управлении версиями заголовков см. в разделе Управление версиями службы управления.

Текст запроса

Отсутствует.

Ответ

Ответ включает код состояния HTTP, набор заголовков ответа и текст ответа.

Код состояния

Успешная операция возвращает код состояния 200 (ОК). Сведения о кодах состояния см. в разделе состояние службы управления и коды ошибок.

Заголовки ответа

Ответ для этой операции включает следующие заголовки. Ответ может также включать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.

Заголовок ответа Описание
x-ms-request-id Значение, которое однозначно определяет запрос к службе управления.

Текст ответа

Текст ответа имеет следующий формат:

  
<?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>  
  

В следующей таблице описаны элементы текста ответа.

Имя элемента Описание
URL-адрес Запрос API управления службами, используемый URI для выполнения Получение свойств учетной записи хранения запросов к учетной записи хранилища.
Первичный Первичный ключ доступа для учетной записи хранения.
Вторичный Вторичный ключ доступа для учетной записи хранения.

Примечания

Использовать хранилище ключей, возвращаемых из Get Storage Account Keys операции для доступа к blob, очереди и конечным точкам службы таблиц для хранения.

Пример

В следующем примере программа принимает идентификатор подписки, связанный отпечаток сертификата управления, строку версии операции, имя учетной записи хранения и выводит возвращенные ключи учетной записи хранения в консоль. Инициализация msVersion, subscriptionId, thumbprint и serviceName переменных с собственными значениями для запуска примера кода.

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; } }  
  

При запуске выходные данные программы будут иметь вид, подобный следующему образцу.

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>