Azure Pipelines'da gizli dizileri koruma
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Bu makale, Azure Pipelines'da gizli dizileri korumaya yönelik en iyi yöntemleri sağlar. Gizli dizi, API anahtarları, parolalar, sertifikalar veya şifreleme anahtarları gibi erişimi sıkı bir şekilde denetlemek istediğiniz her şeydir.
Azure Pipelines gizli dizi değerleri oluşturmaz. Ancak, API anahtarı gibi hassas verileri depolamak için işlem hattına gizli dizi eklemeniz gerekebilir. Gizli dizi değişkenlerini ayarlama hakkında daha fazla bilgi için bkz. Gizli dizi değişkenlerini ayarlama.
Başka bir yöntem varsa gizli dizileri kullanmayın
Bir gizli diziyi korumanın en iyi yöntemi ilk etapta bir gizli diziye sahip olmak değildir. İşlem hattınızın bir görevi gerçekleştirmek için gizli dizi kullanmaktan farklı bir yöntem kullanıp kullanamadığını denetleyin.
- Hizmet bağlantılarını kullan:
- Azure'ı veya diğer hizmetleri hedeflerken, değişkenlerdeki gizli dizileri yönetmek yerine hizmet bağlantılarını kullanın.
- Hizmet bağlantıları, hassas bilgileri doğrudan işlem hattı yapılandırmanızda göstermeden dış hizmetlere güvenli bir şekilde bağlanmanızı sağlar.
- Daha fazla bilgi için bkz . Hizmet bağlantılarını yönetme ve Azure Resource Manager hizmet bağlantısıyla Microsoft Azure'a bağlanma.
Yönetilen kimlikleri kullanma:
- Gizli dizileri doğrudan işlemek yerine yönetilen kimlikleri kullanmayı göz önünde bulundurun.
- Yönetilen kimlikler, uygulamalarınızın ve hizmetlerinizin açık kimlik bilgilerine gerek kalmadan Azure hizmetleriyle güvenliğin kimliğini doğrulamasını sağlar.
- Yönetilen kimlikleri kullanarak diğer Azure hizmetlerine erişebilirsiniz.
Azure CLI görevi:
- Azure CLI görevini kullanıyorsanız işlem hattınızda gizli dizileri açıkça geçirmeden betikteki hizmet sorumlusu ayrıntılarına erişmek için ayarını kullanmayı
addSpnToEnvironment
göz önünde bulundurun.
- Azure CLI görevini kullanıyorsanız işlem hattınızda gizli dizileri açıkça geçirmeden betikteki hizmet sorumlusu ayrıntılarına erişmek için ayarını kullanmayı
Daha fazla bilgi için bkz . Hizmet sorumlularını ve yönetilen kimlikleri kullanma
Gizli dizi değişkenlerini kullanma
Hassas değerleri hiçbir zaman Azure Pipelines .yml dosyasında düz metin olarak depolamayın.
Gizli dizi değişkenleri parolalar, kimlikler ve işlem hattında kullanıma sunulmasını istemediğiniz diğer tanımlayıcı veriler gibi özel bilgiler için kullanılabilir. Azure Key Vault ile gizli dizi değişkenleri ayarlamanızı öneririz. Gizli dizi değişkenlerini kullanıcı arabiriminde veya değişken grubunda da ayarlayabilirsiniz. Gizli dizi değişkeni ayarlamak için günlüğe kaydetme komutu kullanmanızı önermeyiz. Günlüğe kaydetme komutuyla gizli dizi ayarladığınızda, işlem hattınıza erişebilen herkes gizli diziyi de görebilir.
Gizli dizi değişkenleri şifrelenir ve değerlerini göstermeden işlem hatlarında kullanılabilir. Değerleri gösterilmese de, hiçbir zaman gizli dizileri çıkış olarak yansıtmayın ve komut satırında gizli dizileri geçirmeyin. Bunun yerine gizli dizilerinizi ortam değişkenlerine eşlemenizi öneririz.
Gizli dizi oluşturduğunuzda değişken adlandırma yönergelerini izleyin ve gizli dizi adınızın hassas bilgileri ifşa etmediğinden emin olun.
Gizli dizi değişkenlerine erişimi sınırlama
Azure DevOps'ta gizli dizilere erişimi sınırlamak için şu en iyi yöntemleri izleyin:
- Gizli dizilerinizi Azure Key Vault'ta depolayın. Azure Key Vault ile, bir gizli diziye veya gizli dizi grubuna erişimi sınırlamak için Azure'ın rol tabanlı erişim denetimi modelini kullanabilirsiniz.
- İşlem hattı için kullanıcı arabiriminde gizli dizi değişkenleri ayarlayın. bir işlem hattının işlem hattı ayarları kullanıcı arabiriminde ayarlanan gizli dizi değişkenleri, ayarlandıkları işlem hattı kapsamındadır. Bu nedenle, yalnızca bu işlem hattına erişimi olan kullanıcılar tarafından görülebilen gizli dizileriniz olabilir.
- Değişken grubunda gizli diziler ayarlayın. Değişken grupları kitaplık güvenlik modelini izler. Kitaplıkta yeni öğeleri kimlerin tanımlayabileceğini ve var olan bir öğeyi kimlerin kullanabileceğini denetleyebilirsiniz.
Günlüklere gizli dizi yazma
Azure Pipelines, günlüklerdeki gizli dizileri mümkün olan her yerde temizlemeye çalışır, ancak bu kusursuz değildir. Gizli dizileri konsolda yankılamaktan, komut satırı parametrelerinde kullanmaktan veya dosyalara günlüğe kaydetmekten kaçının. Hassas bilgiler veren Azure CLI komutlarını kullanırken dikkatli olun. None output format
Bir Azure CLI çağrısından Use none output format and retrieve security information to a secret variable
gizli dizi almanız gerekiyorsa ve kullanın.
Yapılandırılmış verileri gizli dizi olarak kullanma
Satır başı, ve satır beslemesi\n
gibi denetim karakterleri de dahil olmak üzere gizli dizi değerlerini kapsüllemek için JSON, \r
XML veya YAML gibi yapılandırılmış veri biçimlerini kullanmaktan kaçının. Bunun yerine, her hassas değer için ayrı gizli diziler oluşturun. Bu yaklaşım, redaksiyon doğruluğunun daha iyi olmasını sağlar ve hassas verileri yanlışlıkla ortaya çıkarma riskini en aza indirir.
Gizli dizilerin nasıl işleneceğini denetleme
Gizli dizilerin Azure Pipelines'da nasıl kullanıldığını denetlemek için şu en iyi yöntemleri izleyin:
- Kaynak kodu gözden geçirme: İşlem hattını barındıran deponun kaynak kodunu inceleyin. Gizli dizilerin doğru şekilde işlenmesini sağlamak için işlem hattında kullanılan görevleri denetleyin. Örneğin, gizli dizilerin istemeden istenmeyen konaklara gönderilmediğini veya günlük çıkışına açıkça yazdırılmadığını doğrulayın.
- Çalıştırma günlüklerini inceleyin: Geçerli ve geçersiz girişleri test ettikten sonra işlem hattınızın çalıştırma günlüklerini görüntüleyin. Gizli dizilerin düzgün bir şekilde yeniden işlenip açığa çıkarılmadığından emin olun. Bazen komutlardaki veya araçlardaki hatalar yanlışlıkla gizli dizileri hata günlüklerine sızdırabilir. Azure Pipelines günlüklerdeki gizli dizileri temizlemeye çalışsa da el ile gözden geçirme hala önemlidir.
Gizli dizileri denetleme ve döndürme
Gizli dizileri denetlemek ve döndürmek için şu en iyi yöntemleri izleyin:
- Kayıtlı gizli dizileri gözden geçirme: İşlem hatlarınızda kayıtlı gizli dizileri düzenli aralıklarla değerlendirin. Bunların hala gerekli olduğunu onaylayın ve artık gerekli olmayanları kaldırın; bu da dağınıklığı ve olası güvenlik risklerini azaltmaya yardımcı olur.
- Gizli dizileri döndürme: Gizliliği tehlikeye girmiş bir gizli diziden yararlanabileceği zaman penceresini en aza indirmek için gizli dizileri düzenli olarak döndürün. Gizli dizileri düzenli aralıklarla değiştirerek güvenliği artırırsınız.
- Doğru kimlik doğrulama yöntemini seçin
- Kullanılan gizli dizi türleri:
- Kişisel erişim belirteçleri (PAT): Bu belirteçler kimlik doğrulaması için kullanılır. Doğru kimlik doğrulama yöntemini seçerken en iyi güvenlik yöntemlerini izleyin. REST API'yi kullanarak PAT'leri yönetebilirsiniz.
- Gizli dizi değişkenleri: API anahtarları, parolalar veya diğer kimlik bilgileri gibi hassas bilgileri işlem hattınızda güvenli bir şekilde depolamak için gizli dizi değişkenlerini kullanın.
- Azure Key Vault gizli dizileri: Gizli dizileri güvenli bir şekilde depolamak ve yönetmek için Azure Key Vault kullanın.
- Hizmet bağlantıları: Bu hizmet bağlantıları işlem hattınızın dış hizmetlere (örneğin Azure, GitHub, Docker Hub) bağlanmasına olanak sağlar. Hizmet bağlantısı gizli dizilerinin düzgün yapılandırılmasını ve güvenli bir şekilde işlenmesini sağlayın.
- Kullanılan gizli dizi türleri:
YAML şablonlarını kullanma
Doğrudan işlem hattı YAML'nize gizli dizi parametreleri içeren satır içi betikler dahil olmak yerine şablonları kullanın. Bu yaklaşım, hassas bilgileri ana işlem hattından soyutlayarak güvenliği artırır.
Bu yaklaşımı uygulamak için betiğiniz için ayrı bir YAML dosyası oluşturun ve ardından bu betiği ayrı, güvenli bir depoda depolayın. Daha sonra şablona başvurabilir ve YAML'nizde parametre olarak bir gizli dizi değişkeni geçirebilirsiniz. Güvenli değişken Azure Key Vault'tan, değişken grubundan veya işlem hattı kullanıcı arabiriminden gelmelidir. Şablonları kullanma hakkında daha fazla bilgi için bkz . Şablon kullanımı başvurusu.
Dal ilkeleri ve değişken grubu izinleri ile gizli dizileri sınırlama
Gizli dizilerin dala main
bağlı olduğundan ve rastgele dallara erişilmediğinden emin olmak için değişken grup izinlerinin, koşullu iş eklemenin ve dal ilkelerinin bir bileşimini kullanabilirsiniz.
Dal ilkeleriyle, yalnızca ana daldan derlemelere izin veren derleme doğrulama ilkelerini zorunlu kılabilirsiniz. Ardından değişken grubu izinlerini kullanarak yalnızca yetkili işlem hatlarının değişken grubunuzda depolanan gizli dizilere erişebildiğinden emin olabilirsiniz. Son olarak, değişken grubuna yalnızca dalına gönderme yoluyla başvurulabileceğinden emin olmak için main
işlem hattınızda bir koşul kullanabilirsiniz.
jobs:
- job: ExampleJob
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "This runs only for the main branch"
displayName: 'Conditional Step'
variables:
- group: your-variable-group-name