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.

  • 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.

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 formatBir Azure CLI çağrısından Use none output format and retrieve security information to a secret variablegizli 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, \rXML 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

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

Sonraki adımlar