Bir hizmet ağında kimlik doğrulama ve yetkilendirmeyi kontrol etmek için ASMSecurityPolicy içinde JSON Web Token (JWT) kimlik doğrulaması yapılandırın. Bu sayede yalnızca geçerli bir JWT taşıyan istekler korunan kaynaklara erişebilir ve hizmetler arası iletişimin güvenliği ile gizliliği artırılır.
Arka plan bilgileri
JWT; kullanıcı bilgileri gibi dijital olarak imzalanmış talepler içerir. Bir sistem, imzayı doğrulayarak belirtecin özgünlüğünü ve bütünlüğünü teyit edebilir ve böylece kullanıcının kimliğini doğrular.
Ön koşullar
Otomatik sidecar ara sunucu enjeksiyonu etkinleştirilmiştir.
-
Aşağıdaki yolların erişilebilir olduğundan emin olmak için bir ağ geçidi ve bir sanal hizmet oluşturulmuştur. Daha fazla bilgi için bkz. Istio kaynaklarını kullanarak trafiği sürümlere göre yönlendirme konusundaki 1 ila 3. adımlar.
http://${GATEWAY_ADDRESS}/productpage http://${GATEWAY_ADDRESS}/api/v1/products/1 http://${GATEWAY_ADDRESS}/static/jquery.min.js
Yordam
ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde seçeneklerini seçin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneklerini seçin.
ASMSecurityPolicy sayfasında Create öğesini tıklayın.
-
Create ASMSecurityPolicy iletişim kutusunda JWT seçeneğini seçin ve OK öğesini tıklayın.
-
JWT Config sihirbazında parametreleri yapılandırın ve Next öğesini tıklayın.
Parametre
Örnek
ASMSecurityPolicyName
test-jwt
Certification Rules
Yayıncı
testing@secure.istio.io
JWKS Source
jwks
Anahtar
{ "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]} -
Workload and Match Rules sayfasında Add Workload Group öğesini tıklayın. New Workload Group iletişim kutusunda parametreleri yapılandırın ve OK öğesini tıklayın. Son olarak Submit öğesini tıklayın.
Aşağıdaki tabloda örnek yapılandırmalar açıklanmaktadır.
Parametre
Açıklama
Workload Group Name
Değeri test-policy olarak ayarlayın.
Workload List
-
Add Workload öğesini tıklayın.
-
Add Workload iletişim kutusunda Gateway Scope seçeneğini seçin.
-
Select workloads bölümünde hedef iş yükünü seçin ve selected bölümüne taşımak için
simgesini tıklayın. Ardından OK öğesini tıklayın.
Match Rule List
Aşağıdaki Match Mode seçenekleri kullanılabilir:
-
Auth If Matched: Kurallarla eşleşen isteklerin başarılı olması için geçerli bir JWT taşıması gerekir.
-
Bypass Auth If Matched: Kurallarla eşleşen istekler JWT olmadan veya geçerli bir JWT ile başarılı olabilir. Geçersiz JWT içeren istekler başarısız olur.
Bu örnekte Match Mode değerini Auth If Matched olarak ayarlayın, Matching Rules değerini Custom Matching Rules olarak ayarlayın ve aşağıdaki kuralları yapılandırmak için Add Match Rule öğesini tıklayın.
-
Kural 1: Path anahtarını etkinleştirin ve değerini /static/* olarak ayarlayın.
-
Kural 2: Path anahtarını etkinleştirin ve değerini /api/* olarak ayarlayın.
Complete sayfasında ASMSecurityPolicy created successfully başarı mesajı görüntülenir. Kaynağın yapılandırmasını incelemek için View YAML öğesini tıklayabilir veya ASMSecurityPolicy sayfasına dönmek için Complete öğesini tıklayabilirsiniz.
-
-
-
JWT kimlik doğrulama yapılandırmasının etkili olduğunu doğrulayın.
-
Erişimi test etmek için aşağıdaki komutları çalıştırın.
curl -I http://${GATEWAY_ADDRESS}/productpage # Returns 200. curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 # Returns 403. curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js # Returns 403. # Set the JWT. TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8iLCJzdWIiOiJ0ZXN0aW5nQHNlYcyVyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3UcMI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg # The following requests all return 200. curl -I http://${GATEWAY_ADDRESS}/productpage -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js -H "Authorization: Bearer $TOKEN"Yapılandırma kurallarına göre
/apiveya/staticile başlayan yollara yönelik isteklerin başarılı olması için geçerli bir JWT taşıması gerekir./productpageyoluna yönelik istekler JWT gerektirmez. Sonuçlar kod açıklamalarıyla tutarlıdır ve JWT kimlik doğrulama yapılandırmasının etkili olduğunu doğrular. -
JWT kimlik doğrulama yapılandırma kurallarını değiştirin.
ASMSecurityPolicy sayfasında hedef JWT kimlik doğrulama güvenlik ilkesini bulun ve Operator sütununda edit öğesini tıklayın.
JWT Config sihirbazında Next öğesini tıklayın.
Workload and Match Rules sayfasında hedef iş yükü grubunu bulun ve Operator sütununda edit öğesini tıklayın.
-
New Workload Group iletişim kutusunda parametreleri değiştirin, OK öğesini tıklayın ve ardından Submit öğesini tıklayın.
Aşağıdaki tabloda örnek yapılandırmalar açıklanmaktadır.
Parametre
Açıklama
Match Mode
Bypass Auth If Matched seçeneğini seçin.
Matching Rules/api/*eşleşme kuralını kaldırın ve yalnızca/static/*eşleşme kuralını koruyun.
-
Değiştirilen JWT kimlik doğrulama yapılandırmasının etkili olduğunu doğrulamak için aşağıdaki komutları çalıştırın.
curl -I http://${GATEWAY_ADDRESS}/productpage # Returns 403. curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 # Returns 403. curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js # Returns 200. # Set the JWT. TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3UcMI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg # The following requests all return 200. curl -I http://${GATEWAY_ADDRESS}/productpage -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/api/v1/products/1 -H "Authorization: Bearer $TOKEN" curl -I http://${GATEWAY_ADDRESS}/static/jquery.min.js -H "Authorization: Bearer $TOKEN"Değiştirilen yapılandırma kurallarına göre
/staticile başlayan yollara yönelik istekler JWT olmadan veya geçerli bir JWT ile başarılı olabilir. Diğer tüm isteklerin başarılı olması için geçerli bir JWT taşıması gerekir. Sonuçlar kod açıklamalarıyla tutarlıdır ve değiştirilen JWT kimlik doğrulama yapılandırmasının etkili olduğunu doğrular.
-
İlgili belgeler
ASMSecurityPolicy kavramları ve özellikleri hakkında daha fazla bilgi için bkz. ASMSecurityPolicy'ye genel bakış.
Kullanıcı işlemlerini izlemek için ağ denetimi özelliğini etkinleştirebilirsiniz. Ayrıca önemli kaynaklardaki değişiklikler hakkında ilgili kişilere zamanında bildirim göndermek için kaynak işlemlerine yönelik denetim uyarıları yapılandırabilirsiniz. Daha fazla bilgi için bkz. KubeAPI işlem denetimini kullanma ve Ağ kaynağı işlemleri için denetim uyarıları yapılandırma.