Sdílet prostřednictvím


Kódy chyb rozhraní REST API služby Azure Key Vault

Následující kódy chyb můžou vrátit operace ve webové službě Azure Key Vault.

HTTP 401: Neověřený požadavek

401 znamená, že požadavek není pro Key Vault neověřený.

Požadavek se ověří v následujících případech:

  • Trezor klíčů zná identitu volajícího; a
  • Volající se může pokusit o přístup k prostředkům služby Key Vault.

Žádost může vrátit 401 z několika důvodů.

K požadavku není připojený žádný ověřovací token.

Tady je příklad požadavku PUT, který nastavuje hodnotu tajného kódu:

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)"
}

Hlavička Autorizace je přístupový token, který se vyžaduje při každém volání služby Key Vault pro operace roviny dat. Pokud záhlaví chybí, musí být odpověď 401.

Token nemá k němu přidružený správný prostředek.

Při vyžádání přístupového tokenu z koncového bodu Azure OAUTH je povinný parametr s názvem "prostředek". Hodnota je pro zprostředkovatele tokenu důležitá, protože určuje rozsah tokenu pro zamýšlené použití. Prostředek pro přístup ke službě Key Vault pro všechny tokeny je https://vault.keyvault.net (bez koncového lomítka).

Platnost tokenu vypršela.

Tokeny jsou kódovány base64 a hodnoty lze dekódovat na webech, jako http://jwt.calebb.netje . Zde je výše uvedený dekódovaný token:

    {
 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]

V tomto tokenu vidíme mnoho důležitých částí:

  • aud (cílová skupina): Prostředek tokenu. Všimněte si, že je https://vault.azure.netto . Tento token nebude fungovat pro žádný prostředek, který explicitně neodpovídá této hodnotě, například u grafu.
  • iat (vydáno v): Počet klíštěk od začátku epochy, kdy byl token vydán.
  • nbf (ne dříve): Počet zářezů od začátku epochy, když se tento token stane platným.
  • exp (vypršení platnosti): Počet záškrtů od začátku epochy při vypršení platnosti tohoto tokenu.
  • appid (ID aplikace): IDENTIFIKÁTOR GUID ID aplikace, které tento požadavek provádí.
  • tid (ID tenanta): IDENTIFIKÁTOR GUID pro ID tenanta objektu zabezpečení, který tento požadavek provádí.

Je důležité, aby všechny hodnoty byly v tokenu správně identifikovány, aby žádost fungovala. Pokud je všechno správné, požadavek nebude mít za následek 401.

Řešení potíží 401

Před provedením požadavku do trezoru klíčů by mělo být vyšetřováno 401. Obecně se k vyžádání tokenu používá kód. Po přijetí tokenu se předá do požadavku služby Key Vault. Pokud je kód spuštěný místně, můžete pomocí Fiddleru zachytit požadavek nebo odpověď na https://login.microsoftonline.com. Požadavek vypadá takto:


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

Následující informace zadané uživatelem musí být správné:

  • ID tenanta trezoru klíčů
  • Hodnota prostředku nastavená na https%3A%2F%2Fvault.azure.net (zakódovaná adresa URL)
  • ID klienta
  • Tajný klíč klienta

Ujistěte se, že zbytek požadavku je téměř stejný.

Pokud můžete získat přístupový token odpovědi, můžete ho dekódovat, abyste zajistili ID tenanta, ID klienta (ID aplikace) a prostředek.

HTTP 403: Nedostatečná oprávnění

HTTP 403 znamená, že se požadavek ověřil (zná požadovanou identitu), ale identita nemá oprávnění pro přístup k požadovanému prostředku. Existují dvě příčiny:

  • Pro identitu nejsou žádné zásady přístupu.
  • IP adresa žádajícího prostředku není schválena v nastavení brány firewall trezoru klíčů.

K protokolu HTTP 403 často dochází v případě, že aplikace zákazníka nepoužívá ID klienta, o které si zákazník myslí, že je. To obvykle znamená, že zásady přístupu nejsou správně nastavené pro skutečnou volající identitu.

Pokud se okamžitě po přidání identity do zásad přístupu zobrazí chyba 403, můžete ji zpracovat přidáním pravidelného opakování.

Řešení potíží 403

Nejdřív zapněte protokolování. Pokyny k tomu najdete v tématu Protokolování služby Azure Key Vault.

Po zapnutí protokolování můžete zjistit, jestli je hodnota 403 způsobená zásadami přístupu nebo zásadami brány firewall.

Chyba kvůli zásadám brány firewall

"Adresa klienta (00.00.00.00) není autorizovaná a volající není důvěryhodnou službou"

Existuje omezený seznam důvěryhodných služeb Azure. Weby Azure nejsou důvěryhodnou službou Azure. Další informace najdete v blogovém příspěvku Důvěryhodné služby.

Aby fungovala, musíte do služby Key Vault přidat IP adresu webu Azure.

Pokud je příčinou zásady přístupu: vyhledejte ID objektu pro požadavek a ujistěte se, že ID objektu odpovídá objektu, ke kterému se uživatel pokouší přiřadit zásadu přístupu. V MICROSOFT Entra ID bude často více objektů, které mají stejný název, takže je důležité zvolit ten správný. Odstraněním a čtením zásad přístupu je možné zjistit, jestli existuje více objektů se stejným názvem.

Většina zásad přístupu navíc nevyžaduje použití autorizované aplikace, jak je znázorněno na portálu. Autorizované aplikace se používají pro scénáře ověřování "on-behalf-of", což je vzácné.

HTTP 429: Příliš mnoho požadavků

Pokud počet požadavků překročí stanovený maximální počet pro daný časový rámec, dojde k omezování. Pokud dojde k omezování, odpovědi služby Key Vault budou obsahovat kód HTTP 429. Existují maximální hodnoty pro typy provedených požadavků. Například: Vytvoření 2048bitového klíče HSM je 10 požadavků za 10 sekund, ale všechny ostatní transakce HSM mají limit 2 000 požadavků/10 sekund. Proto je důležité pochopit, které typy volání se provádějí při určování příčiny omezování. Obecně platí, že požadavky na key Vault jsou omezené na 4 000 požadavků za 10 sekund. Výjimky jsou klíčové operace, jak je uvedeno v limitech služby Key Vault.

Řešení chyby 429

Omezování je možné obejít pomocí následujících technik:

  • Zjistěte, jestli existují nějaké vzory požadovaných prostředků, a pokuste se je ve volající aplikaci ukládat do mezipaměti, abyste snížili počet požadavků na službu Key Vault.

  • Když dojde k omezování služby Key Vault, přizpůsobte si požadovaný kód tak, aby pro opakování používal exponenciální regresi. Tento algoritmus je vysvětlený tady: Omezení aplikace

  • Pokud není možné snížit počet požadavků ukládáním do mezipaměti a časované zpomalování nefunguje, zvažte rozdělení klíčů do několika služeb Key Vault. Limit služby pro jedno předplatné je 5 × limit každé služby Key Vault. Pokud používáte více než pět trezorů klíčů, měli byste zvážit použití více předplatných.

Podrobné pokyny, včetně žádosti o zvýšení limitů, najdete tady: Pokyny k omezování služby Key Vault