Azure Batch İsteklerinin Kimliğini Doğrulama
Batch hizmetinde yapılan her isteğin kimliği doğrulanmalıdır. Batch hizmeti Paylaşılan Anahtar veya Microsoft Entra ID aracılığıyla kimlik doğrulamasını destekler.
Paylaşılan Anahtar aracılığıyla kimlik doğrulaması
Kimliği doğrulanmış istek iki üst bilgi gerektirir: Date veya ocp-date üst bilgisi ve Authorization üst bilgisi. Aşağıdaki bölümlerde bu üst bilgilerin nasıl derlediği açıklanmaktadır.
Tarih üst bilgisini belirtme
Kimliği doğrulanmış tüm istekler, istek için Eşgüdümlü Evrensel Saat (UTC) zaman damgasını içermelidir. Zaman damgasını ocp-date üst bilgisinde veya standart HTTP/HTTPS Tarih üst bilgisinde belirtebilirsiniz. İstek için her iki üst bilgi de belirtilirse, isteğin oluşturma zamanı olarak ocp-date değeri kullanılır.
Batch hizmeti, oluşturulduktan sonra 15 dakika içinde bir istek almalıdır. Bunu yaptığınızda hizmet, yeniden yürütme saldırıları gibi güvenlik saldırılarına karşı korunuyor. Bazı HTTP istemci kitaplıkları ve proxy'leri Date üst bilgisini otomatik olarak ayarladığından ve değerini kimliği doğrulanmış isteğe eklemek için okuma fırsatı vermediğinden ocp-date üst bilgisi sağlanır. ocp-date ayarlarsanız, imzayı Date üst bilgisi için boş bir değerle derleyebilirsiniz.
Yetkilendirme üst bilgisini belirtme
Kimliği doğrulanmış bir istek Yetkilendirme üst bilgisini içermelidir. Bir isteğin kimliğini doğrulamak için isteği yapan hesabın anahtarıyla imzalamanız ve isteğin bir parçası olarak bu imzayı geçirmeniz gerekir.
Yetkilendirme üst bilgisinin biçimi aşağıdaki gibidir:
Authorization="SharedKey <AccountName>:<Signature>"
SharedKey
yetkilendirme düzeninin adıdır, AccountName
kaynağı isteyen hesabın adıdır ve istekten oluşturulmuş, SHA256 algoritması kullanılarak hesaplanan ve Signature
ardından Base64 kodlaması kullanılarak kodlanmış karma tabanlı bir İleti Kimlik Doğrulama Kodudur (HMAC).
Aşağıdaki bölümlerde Yetkilendirme üst bilgisinin nasıl derlediği açıklanmaktadır.
İmza dizesini oluşturma
İmza dizesini oluştururken aşağıdakileri göz önünde bulundurun:
Dizenin FIil bölümü, GET veya POST gibi HTTP fiilidir ve büyük harf olmalıdır.
İmza dizesinde bulunan her üst bilgi yalnızca bir kez görüntülenebilir.
Tüm standart HTTP üst bilgilerinin değerleri, dizeye üst bilgi adları olmadan imza biçiminde gösterilen sırayla eklenmelidir. bu üst bilgiler isteğin bir parçası olarak belirtilmiyorsa boş olabilir; bu durumda, yalnızca yeni satır karakteri gereklidir.
Fiil POST olduğunda, content-type ve content-length değerleri istek üst bilgileri ve imza dizesindeki değerler olarak gereklidir. content-Type application/json olarak ayarlanmalıdır; odata=minimalmetadata.
Ocp-date üst bilgisi belirtilirse, Tarih üst bilgisi gerekli değildir, imza dizesinin Date bölümü için boş bir satır belirtmeniz yeterlidir. Bu durumda, ocp-date üst bilgisini eklemek için Kurallı üst bilgiler dizesini oluşturma bölümündeki yönergeleri izleyin.
Gösterilen tüm yeni satır karakterleri (\n) imza dizesi içinde gereklidir.
İmza dizesinin
CanonicalizedHeaders
bir parçasını oluşturan veCanonicalizedResource
dizelerini oluşturma hakkında ayrıntılı bilgi için, bu konunun devamında yer alan uygun bölümlere bakın.
Batch hizmetine yönelik bir isteğin imza dizesini kodlamak için aşağıdaki biçimi kullanın:
StringToSign = VERB + "\n" +
Content-Encoding + "\n"
Content-Language + "\n"
Content-Length + "\n"
Content-MD5 + "\n"
Content-Type + "\n" +
Date + "\n" +
If-Modified-Since + "\n"
If-Match + "\n"
If-None-Match + "\n"
If-Unmodified-Since + "\n"
Range + "\n"
CanonicalizedHeaders +
CanonicalizedResource;
Aşağıdaki örnekte, 20 saniyelik zaman aşımı olan bir hesaptaki işleri listeleme isteği için imza dizesi gösterilmektedir. Üst bilgi değeri yoksa, yalnızca yeni satır karakteri belirtilir.
GET\n\n\n\n\n\n\n\n\n\n\n\nocp-date:Tue, 29 Jul 2014 21:49:13 GMT\n /myaccount/jobs\napi-version:2014-01-01.1.0\ntimeout:20
Bu satırı satır satır bölmek, aynı dizenin her bir bölümünü gösterir:
GET\n /*HTTP Verb*/
\n /*Content-Encoding*/
\n /*Content-Language*/
\n /*Content-Length*/
\n /*Content-MD5*/
\n /*Content-Type*/
\n /*Date*/
\n /*If-Modified-Since */
\n /*If-Match */
\n /*If-None-Match */
\n /*If-Unmodified-Since*/
\n /* Range */
ocp-date:Tue, 29 Jul 2014 21:49:13 GMT\n /*CanonicalizedHeaders*/
/myaccount/jobs\napi-version:2014-04-01.1.0\ntimeout:20 /*CanonicalizedResource*/
Ardından, UTF-8 kodlamalı imza dizesi üzerinde HMAC-SHA256 algoritmasını kullanarak bu dizeyi kodlayıp Yetkilendirme üst bilgisini oluşturun ve üst bilgiyi isteğe ekleyin. Aşağıdaki örnekte aynı işlemin Yetkilendirme üst bilgisi gösterilmektedir:
Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=
Kurallı hale getirilmiş üst bilgi dizesini oluşturma
İmza dizesinin CanonicalizedHeaders
bölümünü oluşturmak için şu adımları izleyin:
Kaynak için ocp-date üst bilgisi de dahil olmak üzere ocp- ile başlayan tüm üst bilgileri alın.
Her HTTP üst bilgi adını küçük harfe dönüştürün.
Üst bilgileri sözcük temelli olarak üst bilgi adına göre artan düzende sıralayın. Her üst bilgi dizede yalnızca bir kez görünebilir.
Kıran boşlukları tek bir boşlukla değiştirin.
Üst bilgideki iki nokta üst üste etrafındaki boşlukları kırpın.
Sonuçta elde edilen listedeki kurallı üst bilgilerin her birine yeni bir satır karakteri ekleyin.
CanonicalizedHeaders
Bu listedeki tüm üst bilgileri tek bir dizede birleştirerek dizeyi oluşturun.
Kurallı hale getirilmiş kaynak dizesini oluşturma
CanonicalizedResource
İmza dizesinin bölümü, istek tarafından hedeflenen Batch hizmetinin kaynağını temsil eder. Kaynağın CanonicalizedResource
URI'sinden türetilen dizenin herhangi bir bölümü tam olarak URI'deki gibi kodlanmalıdır.
Kurallı hale getirilmiş kaynak dizesini oluşturmak için aşağıdaki kuralları göz önünde bulundurun:
Sorgu parametreleri için değerlerde yeni satır karakterini (\n) kullanmaktan kaçının. Kullanılması gerekiyorsa, kurallı hale getirilmiş kaynak dizesinin biçimini etkilemediğinden emin olun.
Sorgu parametresi değerlerinde virgül kullanmaktan kaçının.
Dizeyi CanonicalizedResource
aşağıdaki gibi oluşturabilirsiniz:
Eğik çizgiyle ("/") başlayarak, ardından erişilen kaynağın sahibi olan hesabın adı.
Sorgu parametresi olmadan kaynağın kodlanmış URI yolunu ekleyin.
Api-version parametresi de dahil olmak üzere kaynak URI'sinde tüm sorgu parametrelerini alın.
Tüm parametre adlarını küçük harfe dönüştürün.
Sorgu parametrelerini sözcük temelli olarak parametre adına göre artan düzende sıralayın.
Url ile her sorgu parametresinin adını ve değerinin kodunu çözme.
Her sorgu parametresinin adını ve değerini dizeye aşağıdaki biçimde ekleyerek adla değer arasında iki nokta üst üste (:)) eklediğinizden emin olun:
parameter-name:parameter-value
Sorgu parametresinin birden fazla değeri varsa, tüm değerleri sözcük temelli olarak sıralayın ve bunları virgülle ayrılmış bir listeye ekleyin:
parameter-name:parameter-value-1,parameter-value-2,parameter-value-n
Her ad-değer çifti arkasına yeni bir satır karakteri (\n) ekleyin.
İmzayı Kodlama
İmzayı kodlamak için UTF-8 kodlu imza dizesinde HMAC-SHA256 algoritmasını çağırın ve sonucu Base64 olarak kodlayın. Aşağıdaki biçimi kullanın (sahte kod olarak gösterilir):
Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))
Microsoft Entra ID aracılığıyla kimlik doğrulaması
Azure Batch, Microsoft'un çok kiracılı bulut tabanlı dizini ve kimlik yönetimi hizmeti Microsoft Entra ID ile kimlik doğrulamasını destekler. Azure kendi müşterilerinin, hizmet yöneticilerinin ve kuruluş kullanıcılarının kimliğini doğrulamak için Microsoft Entra ID kullanır.
Not
Microsoft Entra ID ile kimlik doğrulaması isteğe bağlıdır ancak önerilir; yalnızca Batch hesabınız bir kullanıcı aboneliğindeki havuzları ayıracak şekilde ayarlandıysa gereklidir. Havuz ayırma seçeneği, yeni bir Batch hesabı oluşturduğunuzda kullanılabilir. Hesabınız Batch tarafından yönetilen bir abonelikte havuzları ayıracak şekilde ayarlandıysa, kimlik doğrulaması için Microsoft Entra ID kullanmak isteğe bağlıdır. Daha fazla bilgi için bkz . Batch – Sanal Ağ ve Sanal Makine Havuzları için Özel Görüntü Desteği.
Azure AD ile bir isteğin kimliğini doğrulama hakkında genel bilgi için bkz. Azure REST API Başvurusu. Batch hizmetiyle Azure AD kullanmak için aşağıdaki uç noktalara ihtiyacınız vardır.
Azure AD uç noktası "ortak" uç noktası:
https://login.microsoftonline.com/common
Batch hizmetinin kaynak uç noktası:
https://batch.core.windows.net/
Batch uygulamanızı Microsoft Entra ID kaydetme hakkında ek bilgi için bkz. Microsoft Entra ID ile Azure Batch hizmetlerinin kimliğini doğrulama.