Azure Key Vault REST API Hata Kodları

Azure Key Vault web hizmetindeki bir işlem tarafından aşağıdaki hata kodları döndürülebilir.

HTTP 401: Kimliği Doğrulanmamış İstek

401, isteğin Key Vault için kimliği doğrulanmamış olduğu anlamına gelir.

Şu durumda bir isteğin kimliği doğrulanır:

  • Anahtar kasası çağıranın kimliğini bilir; Ve
  • Arayanın Key Vault kaynaklarına erişmeyi denemesine izin verilir.

Bir isteğin 401 döndürebilir olmasının çeşitli nedenleri vardır.

İsteğe bağlı kimlik doğrulama belirteci yok

Gizli dizi değerini ayaren örnek bir PUT isteği aşağıda verilmişti:

PUT https://putreqexample.vault.azure.net//secrets/DatabaseRotatingPassword?api-version=7.0 HTTP/1.1
x-ms-client-request-id: 03d275a2-52a4-4bed-82c8-6fe15165affb
accept-language: en-US
Authorization: Bearer     eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5iQ3dXMTF3M1hrQi14VWFYd0tSU0xqTUhHUSIsImtpZCI6Im5iQ3dXMTF3M1hrQi14VWFYd0tSU0xqTUhHUSJ9.eyJhdWQiOiJodHRwczovL3ZhdWx0LmF6dXJlLm5ldCIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0Ny8iLCJpYXQiOjE1NDg2OTc1MTMsIm5iZiI6MTU0ODY5NzUxMywiZXhwIjoxNTQ4NzAxNDEzLCJhaW8iOiI0MkpnWUhoODVqaVBnZHF5ZlRGZE5TdHY3bGUvQkFBPSIsImFwcGlkIjoiZmFkN2Q1YjMtNjlkNi00YjQ4LTkyNTktOGQxMjEyNGUxY2YxIiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3LyIsIm9pZCI6IjM5NzVhZWVkLTdkMDgtNDUzYi1iNmY0LTQ0NWYzMjY5ODA5MSIsInN1YiI6IjM5NzVhZWVkLTdkMDgtNDUzYi1iNmY0LTQ0NWYzMjY5ODA5MSIsInRpZCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsInV0aSI6IjItZ3JoUmtlSWs2QmVZLUxuNDJtQUEiLCJ2ZXIiOiIxLjAifQ.fgubiz1MKqTJTXI8dHIV7t9Fle6FdHrkaGYKcBeVRX1WtLVuk1QVxzIFDlZKLXJ7QPNs0KWpeiWQI9IWIRK-8wO38yCqKTfDlfHOiNWGOpkKddlG729KFqakVf2w0GPyGPFCONRDAR5wjQarN9Bt8I8YbHwZQz_M1hztlnv-Lmsk1jBmech9ujD9-lTMBmSfFFbHcqquev119V7sneI-zxBZLf8C0pIDkaXf1t8y6Xr8CUJDMdlWLslCf3pBCNIOy65_TyGvy4Z4AJryTPBarNBPwOkNAtjCfZ4BDc2KqUZM5QN_VK4foP64sVzUL6mSr0Gh7lQJIL5b1qIpJxjxyQ
User-Agent: FxVersion/4.7.3324.0 OSName/Windows OSVersion/6.2.9200.0 Microsoft.Azure.KeyVault.KeyVaultClient/3.0.3.0
Content-Type: application/json; charset=utf-8
Host: putreqexample.vault.azure.net
Content-Length: 31

{
   "value": "m*gBJ7$Zuoz)"
}

"Yetkilendirme" üst bilgisi, veri düzlemi işlemleri için Key Vault'a yapılan her çağrıda gereken erişim belirtecidir. Üst bilgi eksikse yanıt 401 olmalıdır.

Belirteçle ilişkilendirilmiş doğru kaynak eksik

Azure OAUTH uç noktasından erişim belirteci istenirken"kaynak" adlı bir parametre zorunludur. Belirteç sağlayıcısı için değer önemlidir çünkü belirtecin kapsamını hedeflenen kullanımı için kullanır. Key Vault'a erişmek için tüm belirteçlerin kaynağı şudur https://vault.keyvault.net (sonunda eğik çizgi yoktur).

Belirtecin süresi doldu

Belirteçler base64 kodlanır ve gibi web sitelerinde http://jwt.calebb.netdeğerlerin kodu çözülebilir. Yukarıdaki belirtecin kodunun çözülen kodu aşağıdadır:

    {
 typ: "JWT",
 alg: "RS256",
 x5t: "nbCwW11w3XkB-xUaXwKRSLjMHGQ",
 kid: "nbCwW11w3XkB-xUaXwKRSLjMHGQ"
}.
{
 aud: "https://vault.azure.net",
 iss: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/",
 iat: 1548697513,
 nbf: 1548697513,
 exp: 1548701413,
 aio: "42JgYHh85jiPgdqyfTFdNStv7le/BAA=",
 appid: "fad7d5b3-69d6-4b48-9259-8d12124e1cf1",
 appidacr: "1",
 idp: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/",
 oid: "3975aeed-7d08-453b-b6f4-445f32698091",
 sub: "3975aeed-7d08-453b-b6f4-445f32698091",
 tid: "72f988bf-86f1-41af-91ab-2d7cd011db47",
 uti: "2-grhRkeIk6BeY-Ln42mAA",
 ver: "1.0"
}.
[signature]

Bu belirteçte birçok önemli bölüm görebiliriz:

  • aud (hedef kitle): Belirtecin kaynağı. Bunun olduğuna https://vault.azure.netdikkat edin. Bu belirteç, grafik gibi bu değerle açıkça eşleşmeyen herhangi bir kaynak için ÇALıŞMAZ.
  • iat (verildiği yer): Belirtecin verildiği dönem başlangıcından bu yana geçen değer sayısı.
  • nbf (daha önce değil): Bu belirteç geçerli olduğunda dönem başlangıcından bu yana geçen değer sayısı.
  • exp (süre sonu): Bu belirtecin süresi dolduğunda dönem başlangıcından bu yana geçen değer sayısı.
  • appid (uygulama kimliği): Bu isteği yapan uygulama kimliğinin GUID'si.
  • tid (kiracı kimliği): Bu isteği yapan sorumlunun kiracı kimliği için GUID

İsteğin çalışması için belirteçte tüm değerlerin düzgün bir şekilde tanımlanması önemlidir. Her şey doğruysa istek 401 ile sonuçlanır.

Sorun Giderme 401

Anahtar kasasına istek yapılmadan önce belirteç oluşturma noktasından 401'ler araştırılmalıdır. Genellikle belirteç istemek için kod kullanılır. Belirteç alındıktan sonra Key Vault isteğine geçirilir. Kod yerel olarak çalışıyorsa, isteği/yanıtı https://login.microsoftonline.comyakalamak için Fiddler'ı kullanabilirsiniz. İstek şuna benzer:


POST https://login.microsoftonline.com/<key vault tenant ID>/oauth2/token HTTP/1.1
Accept: application/json
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 192

resource=https%3A%2F%2Fvault.azure.net&client_id=<registered-app-ID>&client_secret=<registered-app-secret>&client_info=1&grant_type=client_credentials

Kullanıcı tarafından sağlanan aşağıdaki bilgiler doğru olmalıdır:

  • Anahtar kasası kiracı kimliği
  • Kaynak değeri https%3A%2F%2Fvault.azure.net olarak ayarlandı (URL kodlandı)
  • İstemci kodu
  • İstemci gizli anahtarı

İsteğin geri kalanının neredeyse aynı olduğundan emin olun.

Yalnızca yanıt erişim belirtecini alabiliyorsanız, kiracı kimliğini, istemci kimliğini (uygulama kimliği) ve kaynağı güvence altına almak için kodunu çözebilirsiniz.

HTTP 403: İzinler Yetersiz

HTTP 403, isteğin kimliğinin doğrulandığı (istekte bulunan kimliği bildiği) ancak kimliğin istenen kaynağa erişim izni olmadığı anlamına gelir. bunun iki nedeni vardır:

  • Kimlik için erişim ilkesi yok.
  • anahtar kasasının güvenlik duvarı ayarlarında istekte bulunan kaynağın IP adresi onaylanmaz.

HTTP 403 genellikle müşterinin uygulaması müşterinin düşündüğü istemci kimliğini kullanmadığında oluşur. Bu genellikle erişim ilkelerinin gerçek çağrı kimliği için doğru ayarlanmadığı anlamına gelir.

Erişim ilkesine kimlik ekledikten hemen sonra 403 hatası alırsanız, düzenli olarak yeniden deneme ekleyerek bunu işleyebilirsiniz.

Sorun giderme 403

İlk olarak günlüğü açın. Bunu yapma yönergeleri için bkz . Azure Key Vault günlüğü.

Günlük açıldıktan sonra, 403'e erişim ilkesi mi yoksa güvenlik duvarı ilkesi mi bağlı olduğunu belirleyebilirsiniz.

Güvenlik duvarı ilkesi nedeniyle hata oluştu

"İstemci adresi (00.00.00.00) yetkili değil ve arayan güvenilir bir hizmet değil"

Sınırlı bir "Azure Güvenilen Hizmetler" listesi vardır. Azure Web Siteleri Güvenilir Bir Azure Hizmeti değildir . Daha fazla bilgi için Azure Uygulaması Hizmetlerine göre Key Vault Güvenlik Duvarı erişimi blog gönderisine bakın.

Çalışması için Azure Web Sitesinin IP adresini Key Vault'a eklemeniz gerekir.

Erişim ilkesinden kaynaklanıyorsa: isteğin nesne kimliğini bulun ve nesne kimliğinin kullanıcının erişim ilkesini atamaya çalıştığı nesneyle eşleştiğinden emin olun. Microsoft Entra Id'de genellikle aynı ada sahip birden çok nesne olacaktır, bu nedenle doğru olanı seçmek önemlidir. Erişim ilkesini silip okuyarak, aynı ada sahip birden çok nesne olup olmadığını görmek mümkündür.

Ayrıca, çoğu erişim ilkesi portalda gösterildiği gibi "Yetkili uygulamanın" kullanılmasını gerektirmez. Yetkili uygulamalar nadir görülen "adına" kimlik doğrulama senaryoları için kullanılır.

HTTP 429: Çok Fazla İstek

İstek sayısı zaman aralığı için belirtilen maksimum sınırı aştığında azaltma gerçekleşir. Azaltma olduğunda Key Vault, HTTP 429 yanıtını verir. Yapılan istek türleri için belirtilen maksimum değerler vardır. Örneğin: HSM 2048 bit anahtar oluşturma işlemi 10 saniyede 10 istektir, ancak diğer tüm HSM işlemleri 2.000 istek/10 saniye sınırına sahiptir. Bu nedenle azaltmanın nedenini belirlerken hangi tür çağrıların yapıldığını anlamak önemlidir. Genel olarak, Key Vault'a yönelik istekler 4.000 istek/10 saniye ile sınırlıdır. Key Vault hizmet sınırlarında belirtildiği gibi özel durumlar Anahtar İşlemleri'dir

429 sorunlarını giderme

Aşağıdaki teknikler, kapasite azaltma için geçici çözüm sunar:

  • İstenen kaynağa yönelik desenlerin olup olmadığını belirleyerek ve bir çağrı uygulamasında bunları önbelleğe almayı deneyerek Key Vault'a yapılan isteklerin sayısını azaltın.

  • Key Vault azaltma gerçekleştiğinde, istekte bulunan kodu yeniden denemek için üstel geri alma kullanacak şekilde uyarlayın. Algoritma burada açıklanmıştır: Uygulamanızı kısıtlama

  • Önbelleğe alma yoluyla isteklerin sayısı azaltılamıyorsa ve süreli geri çekilme çalışmazsa, anahtarları birden fazla Key Vault'a bölmeyi göz önünde bulundurun. Tek bir aboneliğin hizmet sınırı, tek bir Key Vault sınırının 5 katıdır. Beşten fazla Key Vault kullanılıyorsa, birden çok abonelik kullanımı dikkate alınmalıdır.

Sınırları artırma isteği de dahil olmak üzere ayrıntılı yönergelere buradan ulaşabilirsiniz: Key Vault azaltma kılavuzu