GCP - Understanding Domain-Wide Delegation
Last updated
Last updated
Bu yazı, daha fazla ayrıntı için https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover adresinden erişilebilen https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover adresinin tanıtımıdır.
Google Workspace'in Alan Geniş Yetkilendirme özelliği, bir Google Workspace Marketplace dışındaki uygulama veya bir iç GCP Hizmet Hesabı tarafından, kullanıcılar adına Workspace üzerindeki verilere erişim sağlamasına olanak tanır. Bu özellik, Google API'leriyle etkileşimde bulunan uygulamalar veya kullanıcı taklitine ihtiyaç duyan hizmetler için önemlidir ve görevleri otomatikleştirerek verimliliği artırır ve insan hatalarını en aza indirir. OAuth 2.0 kullanarak, uygulama geliştiricileri ve yöneticileri bu hizmet hesaplarına kullanıcı verilerine erişim izni verebilirler, böylece her bir kullanıcının ayrı ayrı onay vermesine gerek kalmaz. Google Workspace, iki ana türde genel yetkilendirilmiş nesne kimlikleri oluşturmaya izin verir:
GWS Uygulamaları: Workspace Marketplace'den alınan uygulamalar, yetkilendirilmiş bir kimlik olarak yapılandırılabilir. Her Workspace uygulaması, potansiyel kötüye kullanımı en aza indirmek için Google tarafından incelenir. Bu, kötüye kullanım riskini tamamen ortadan kaldırmaz, ancak böyle olayların gerçekleşmesini önemli ölçüde zorlaştırır.
GCP Hizmet Hesabı: GCP Hizmet Hesapları hakkında daha fazla bilgi edinin.
Bir GCP Hizmet Hesabı'nın Google API'lerine Google Workspace içindeki diğer kimlikler adına nasıl erişebileceği aşağıdaki gibi çalışır:
Kimlik JWT oluşturur: Kimlik, JWT'yi oluşturmak için hizmet hesabının özel anahtarını (JSON anahtar çifti dosyasının bir parçası) kullanır. Bu JWT, istenen REST API'sine erişim için hizmet hesabı, taklit edilecek hedef kullanıcı ve OAuth kapsamları hakkında talepler içerir.
Kimlik, erişim belirteci talep etmek için JWT'yi kullanır: Uygulama/kullanıcı, JWT'yi Google'ın OAuth 2.0 hizmetinden bir erişim belirteci talep etmek için kullanır. Talep ayrıca taklit edilecek hedef kullanıcıyı (kullanıcının Workspace e-postası) ve erişim istenen kapsamları içerir.
Google'ın OAuth 2.0 hizmeti bir erişim belirteci döndürür: Erişim belirteci, hizmet hesabının belirtilen kapsamlar için kullanıcı adına hareket etme yetkisini temsil eder. Bu belirteç genellikle kısa ömürlüdür ve periyodik olarak yenilenmelidir (uygulamanın ihtiyacına göre). JWT belirtecinde belirtilen OAuth kapsamlarının geçerliliği ve etkisi olduğunu anlamak önemlidir. Örneğin, birden fazla kapsama sahip erişim belirteçleri, birçok REST API uygulaması için geçerlilik sağlar.
Kimlik, erişim belirteciyle Google API'lerini çağırır: İlgili bir erişim belirteğiyle hizmet, gereken REST API'ye erişebilir. Uygulama, bu erişim belirteğini, Google API'leri için HTTP isteklerinin "Authorization" başlığında kullanır. Bu API'ler, taklit edilen kimliği doğrulamak ve gerekli yetkilendirmeye sahip olduğunu onaylamak için belirteci kullanır.
Google API'leri istenen verileri döndürür: Erişim belirteci geçerli ise ve hizmet hesabı uygun yetkilendirmeye sahipse, Google API'leri istenen verileri döndürür. Örneğin, aşağıdaki resimde, hedef Workspace kullanıcısıyla ilişkili tüm Gmail ileti kimliklerini listelemek için users.messages.list yöntemini kullanmışızdır.