Ağ geçidi denetleyicisi düzeniGatekeeper pattern

İstemcilerle uygulama veya hizmet arasında aracı işlevi gören, istekleri doğrulayan ve temizleyen, aralarında isteklerle verilerin geçişini yapan ayrılmış bir konak örneği kullanarak uygulamaları ve hizmetleri koruyun.Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them. Bu, ek bir güvenlik katmanı sağlayabilir ve sistemin saldırı yüzeyini sınırlayabilir.This can provide an additional layer of security, and limit the attack surface of the system.

Bağlam ve sorunContext and problem

Uygulamalar, istekleri kabul ederek ve işleyerek işlevleri istemcilerin kullanımına sunar.Applications expose their functionality to clients by accepting and processing requests. Bulutta barındırılan senaryolarda, uygulamalar istemcilerin bağlandığı uç noktaları kullanıma sunar ve genellikle istemcilerden gelen istekleri işleyecek kodu içerir.In cloud-hosted scenarios, applications expose endpoints clients connect to, and typically include the code to handle the requests from clients. Bu kod, kimlik doğrulaması ve doğrulama gerçekleştirir, istek işleme işlevinin bir kısmını veya tümünü tamamlar ve büyük olasılıkla istemci adına depolama alanına ve diğer hizmetlere erişir.This code performs authentication and validation, some or all request processing, and is likely to accesses storage and other services on behalf of the client.

Kötü niyetli bir kullanıcı, sistemi ele geçirip uygulamanın barındırma ortamına erişim elde ederse, kimlik bilgileri ve depolama anahtarları gibi kullanılan güvenlik mekanizmaları, erişilen hizmetler ve veriler kullanıma sunulur.If a malicious user is able to compromise the system and gain access to the application’s hosting environment, the security mechanisms it uses such as credentials and storage keys, and the services and data it accesses, are exposed. Bunun sonucunda, söz konusu kötü amaçlı kullanıcı hassas bilgiler ve diğer hizmetler için sınırsız erişim elde edebilir.As a result, the malicious user can gain unrestrained access to sensitive information and other services.

ÇözümSolution

İstemcilerin hassas bilgilere ve hizmetlere erişim elde etmesi riskini en aza indirmek için istekleri işleyen ve depolama alanına erişen koddan genel uç noktalarını kullanıma sunan konakları ve görevleri birbirinden ayırın.To minimize the risk of clients gaining access to sensitive information and services, decouple hosts or tasks that expose public endpoints from the code that processes requests and accesses storage. İstemcilerle etkileşime geçen ve sonra isteği işleyecek olan konaklara veya görevlere (örneğin, ayrılmış bir arabirim yoluyla) devreden bir cepheyi ya da ayrılmış bir görevi kullanarak bunu gerçekleştirebilirsiniz.You can achieve this by using a façade or a dedicated task that interacts with clients and then hands off the request—perhaps through a decoupled interface—to the hosts or tasks that'll handle the request. Şekilde, bu düzene ilişkin üst düzey bir genel bakış sağlanmaktadır.The figure provides a high-level overview of this pattern.

Bu düzene üst düzey genel bakış

Ağ geçidi denetleyicisi düzeni yalnızca depolama alanının korunması için kullanılabilmesinin yanı sıra uygulamanın tüm işlevlerinin korunmasına yönelik daha kapsamlı bir cephe olarak da kullanılabilir.The gatekeeper pattern can be used to simply protect storage, or it can be used as a more comprehensive façade to protect all of the functions of the application. Önemli faktörler şunlardır:The important factors are:

  • Denetimli doğrulama.Controlled validation. Ağ geçidi, tüm istekleri doğrular ve doğrulama gereksinimlerini karşılamayanları reddeder.The gatekeeper validates all requests, and rejects those that don't meet validation requirements.
  • Sınırlı risk ve Etkilenme düzeyi.Limited risk and exposure. Ağ geçidi denetleyicisi, depolama alanına veya hizmetlere erişim için güvenilir konak tarafından kullanılan kimlik bilgilerine veya anahtarlara erişim sahibi değildir.The gatekeeper doesn't have access to the credentials or keys used by the trusted host to access storage and services. Ağ geçidi denetleyicisi ele geçirilirse saldırgan bu kimlik bilgilerine veya anahtarlara erişim elde edemez.If the gatekeeper is compromised, the attacker doesn't get access to these credentials or keys.
  • Uygun güvenlik.Appropriate security. Ağ geçidi denetleyicisi sınırlı bir ayrıcalık modunda çalışırken uygulamanın diğer kısmı, depolama alanına ve hizmetlere erişim için gerekli olan tam güven modunda çalışır.The gatekeeper runs in a limited privilege mode, while the rest of the application runs in the full trust mode required to access storage and services. Ağ geçidi denetleyicisi ele geçirilirse uygulama hizmetlerine veya verilerine doğrudan erişemez.If the gatekeeper is compromised, it can't directly access the application services or data.

Bu düzen tipik bir ağ topografisindeki bir güvenlik duvarı işlevini görür.This pattern acts like a firewall in a typical network topography. Ağ geçidi denetleyicisinin istekleri inceleyip, gerekli görevleri gerçekleştiren güvenilir konağa (anahtar yöneticisi olarak da anılır) isteği iletip iletmeme konusunda bir karar vermesini sağlar.It allows the gatekeeper to examine requests and make a decision about whether to pass the request on to the trusted host (sometimes called the keymaster) that performs the required tasks. Bu karar genellikle ağ geçidi denetleyicisinin, isteği güvenilir konağa iletmeden önce istek içeriğini doğrulayıp temizlemesini gerektirir.This decision typically requires the gatekeeper to validate and sanitize the request content before passing it on to the trusted host.

Sorunlar ve dikkat edilmesi gerekenlerIssues and considerations

Bu düzenin nasıl uygulanacağına karar verirken aşağıdaki noktaları göz önünde bulundurun:Consider the following points when deciding how to implement this pattern:

  • Ağ geçidi denetleyicisinin, istekleri ilettiği güvenilir konakların yalnızca iç veya korumalı uç noktaları kullanıma sunduğundan ve yalnızca ağ geçidi denetleyicisine bağlandığından emin olun.Ensure that the trusted hosts the gatekeeper passes requests to expose only internal or protected endpoints, and connect only to the gatekeeper. Güvenilen konaklar, herhangi bir dış uç noktayı veya arabirimi kullanıma sunmamalıdır.The trusted hosts shouldn't expose any external endpoints or interfaces.
  • Ağ geçidi denetleyicisi, sınırlı ayrıcalık modunda çalışmalıdır.The gatekeeper must run in a limited privilege mode. Genellikle bu, ağ geçidi denetleyicisinin ve güvenilir konağın ayrı barındırılan hizmetlerde veya sanal makinelerde çalıştırılması anlamına gelir.Typically this means running the gatekeeper and the trusted host in separate hosted services or virtual machines.
  • Ağ geçidi uygulama veya hizmetlerle ilgili herhangi bir işlem gerçekleştirmemeli ya da verilere erişmemelidir.The gatekeeper shouldn't perform any processing related to the application or services, or access any data. Tek işlevi istekleri doğrulamak ve temizlemektir.Its function is purely to validate and sanitize requests. Güvenilir konakların isteklerde ek doğrulama gerçekleştirmesi gerekebilir ancak çekirdek doğrulama işlemi, ağ geçidi denetleyicisi tarafından gerçekleştirilmelidir.The trusted hosts might need to perform additional validation of requests, but the core validation should be performed by the gatekeeper.
  • Ağ geçidi denetleyicisi ile güvenilir konaklar veya görevler arasında mümkünse güvenli bir iletişim kanalı (HTTPS, SSL veya TLS) kullanın.Use a secure communication channel (HTTPS, SSL, or TLS) between the gatekeeper and the trusted hosts or tasks where this is possible. Ancak, bazı barındırma ortamları iç uç noktalarında HTTPS’yi desteklemez.However, some hosting environments don't support HTTPS on internal endpoints.
  • Ağ geçidi denetleyicisi düzeninin uygulanması için uygulamaya ek katman eklenmesi, bu işlem için gereken ek işlem ve ağ iletişimi nedeniyle performans üzerinde bazı etkiler doğurabilir.Adding the extra layer to the application to implement the gatekeeper pattern is likely to have some impact on performance due to the additional processing and network communication it requires.
  • Ağ geçidi denetleyicisi örneği, tek hata noktası olabilir.The gatekeeper instance could be a single point of failure. Bir hatanın etkisini en aza indirmek için ek örnekler dağıtmayı ve kullanılabilirlik sağlamak açısından otomatik bir ölçeklendirme mekanizması kullanmayı deneyin.To minimize the impact of a failure, consider deploying additional instances and using an autoscaling mechanism to ensure capacity to maintain availability.

Bu düzenin kullanılacağı durumlarWhen to use this pattern

Bu düzen aşağıdakiler için kullanışlıdır:This pattern is useful for:

  • Hassas bilgiler işleyen, kötü amaçlı saldırılara karşı yüksek bir koruma derecesine sahip olması gereken hizmetleri kullanıma sunan veya kesintiye uğramaması gereken görev açısından kritik işlemler gerçekleştiren uygulamalar.Applications that handle sensitive information, expose services that must have a high degree of protection from malicious attacks, or perform mission-critical operations that shouldn't be disrupted.
  • Ana görevlerden ayrı olarak istek doğrulamasının gerçekleştirilmesi gereken veya bakım ve yönetimin basitleştirilmesi için bu doğrulamanın merkezileştirilmesi gereken dağıtılmış uygulamalar.Distributed applications where it's necessary to perform request validation separately from the main tasks, or to centralize this validation to simplify maintenance and administration.

ÖrnekExample

Bu düzen; bulut tarafından barındırılan bir senaryoda, ağ geçidi denetleyicisi rolü veya sanal makine bir uygulamadaki güvenilir rollerden ve hizmetlerden ayrılarak uygulanabilir.In a cloud-hosted scenario, this pattern can be implemented by decoupling the gatekeeper role or virtual machine from the trusted roles and services in an application. Bunu bir iç uç nokta, sıra veya depolama alanını bir ara iletişim mekanizması şeklinde kullanarak gerçekleştirin.Do this by using an internal endpoint, a queue, or storage as an intermediate communication mechanism. Şekilde bir iç uç noktanın kullanımı gösterilmektedir.The figure illustrates using an internal endpoint.

Cloud Services web ve çalışan rollerini kullanan bir düzen örneği

Ağ Geçidi Denetleyicisi düzeni uygulanırken Vale Anahtarı düzeni de kullanılabilir.The Valet Key pattern might also be relevant when implementing the Gatekeeper pattern. Ağ Geçidi Denetleyicisi ile güvenilir roller arasındaki iletişimde, kaynaklara erişme izinlerini sınırlayan anahtarları ve belirteçleri kullanarak güvenlik düzeyini artırmak faydalı bir yöntemdir.When communicating between the Gatekeeper and trusted roles it's good practice to enhance security by using keys or tokens that limit permissions for accessing resources. İstemcilerin belirli bir kaynağa veya hizmete kısıtlı doğrudan erişim elde etmesini sağlayan bir belirtecin veya anahtarın nasıl kullanılacağını açıklar.Describes how to use a token or key that provides clients with restricted direct access to a specific resource or service.