내보내기(0) 인쇄
모두 확장

저장소 계정 키 가져오기

업데이트 날짜: 2015년 2월

Get Storage Keys 작업은 지정된 저장소 계정의 기본 액세스 키 및 보조 액세스 키를 반환합니다.

다음과 같이 Get Storage Keys 요청을 지정할 수 있습니다. <subscription-id>를 구독 ID로 바꾸고, <service-name>을 저장소 계정의 이름으로 바꾸세요.

 

방법 요청 URI

GET

https://management.core.windows.net/<subscription-id>/services/storageservices/<service-name>/keys

관리 서비스에 대한 요청이 안전한지 확인해야 합니다. 자세한 내용은 서비스 관리 요청 인증을 참조하세요.

다음 표에서는 요청 헤더에 대해 설명합니다.

 

요청 헤더 설명

x-ms-version

필수 사항입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 이 헤더는 01.10.09 이후로 설정되어야 합니다. 버전 관리 헤더에 대한 자세한 내용은 서비스 관리 버전 관리를 참조하세요.

없음.

응답에는 HTTP 상태 코드, 응답 헤더 집합 및 응답 본문이 포함되어 있습니다.

작업에 성공하면 상태 코드 200(정상)이 반환됩니다. 상태 코드에 대한 자세한 내용은 서비스 관리 상태 및 오류 코드를 참조하십시오.

이 작업의 응답에는 다음과 같은 헤더가 포함됩니다. 응답에는 추가 표준 HTTP 헤더가 포함될 수도 있습니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을 따릅니다.

 

응답 헤더 설명

x-ms-request-id

관리 서비스에 대해 수행된 요청을 고유하게 식별하는 값입니다.

응답 본문의 형식은 다음과 같습니다.


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

다음 표에서는 응답 본문의 요소에 대해 설명합니다.

 

요소 이름 설명

Url

저장소 계정에 대해 저장소 계정 속성 가져오기 요청을 수행하는 데 사용되는 서비스 관리 API 요청 URI입니다.

Primary

저장소 계정의 기본 액세스 키입니다.

Secondary

저장소 계정의 보조 액세스 키입니다.

Get Storage Account Keys 작업에서 반환된 저장소 키를 사용하여 저장소의 Blob, 큐 및 테이블 서비스 끝점에 액세스할 수 있습니다.

다음 예제 프로그램에서는 구독 ID, 연결된 관리 인증서 지문, 작업 버전 문자열, 저장소 계정 이름을 사용하며 반환되는 저장소 계정 키를 콘솔에 출력합니다. 예제 코드를 실행하려면 msVersion, subscriptionId, thumbprintserviceName 변수를 원하는 값으로 초기화합니다.

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 = "http://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="http://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>

표시:
© 2015 Microsoft