• Hakkımızda
  • Yazı Gönder
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
No Result
View All Result
Home Android

Azure DevOps ile Flutter & Android CI/CD Keystore Şifrelerini Hardcode Etmeden Güvenli Saklamak (Secure Variable)

Ali Murat Çevik by Ali Murat Çevik
Şubat 28, 2026
in Android, Flutter, Siber Güvenlik
4 min read
0
Azure DevOps ile Flutter & Android CI/CD Keystore Şifrelerini Hardcode Etmeden Güvenli Saklamak (Secure Variable)
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

Mobil uygulama geliştirme süreçlerinde CI/CD otomasyonu artık bir lüks değil, zorunluluk haline geldi. Özellikle Flutter ve Android projelerinde release sürecini Azure DevOps üzerinden yönetirken en kritik konulardan biri, keystore şifrelerinin güvenli şekilde saklanmasıdır. Pek çok geliştirici hâlâ key.properties dosyası içinde veya pipeline YAML dosyasında şifreleri hardcode ederek ilerliyor. Ancak bu yöntem hem güvenlik riski oluşturur hem de kurumsal projelerde ciddi açıklar doğurabilir.
Bu yazıda, Azure DevOps ile Flutter & Android CI/CD sürecinde keystore şifrelerini hardcode etmeden nasıl güvenli saklayabileceğinizi (Secure Variable kullanarak) adım adım ele alacağız.

Özellikle:

  • Azure DevOps Secure Variables nedir?
  • Pipeline içinde gizli değişkenler nasıl tanımlanır?
  • Flutter & Android build sürecinde keystore bilgileri nasıl güvenli şekilde kullanılır?
  • YAML pipeline yapısında güvenli konfigürasyon nasıl sağlanır?

gibi konulara teknik ve uygulanabilir örneklerle değineceğiz.
CI/CD sürecinde şifreleri doğrudan repoya eklemek; versiyon kontrol sistemlerinde kalıcı iz bırakır, ekip içi erişim risklerini artırır ve güvenlik denetimlerinde problem yaratır. Bunun yerine Azure DevOps Library ve Secure Variable mekanizması kullanarak hem güvenliği artırabilir hem de profesyonel bir DevOps mimarisi kurabilirsiniz.
Eğer siz de Flutter projenizde Android release build alırken keystore şifrelerini güvenli, ölçeklenebilir ve kurumsal standartlara uygun şekilde yönetmek istiyorsanız, bu rehber tam size göre.

Adım 1:
Öncelikle Android klasörü altında yer alan key.properties dosyasındaki bilgileri Azure DevOps ortamına secure variable olarak eklemek olacak.

Azure DevOps -> Pipelines -> Library altında projenizde kullandığınız variable group içerisindeki enviroment dosyanıza STORE_PASSWORD, KEY_PASSWORD ve KEY_ALIAS değerlerini ekleyin. Ardından value ifadelerinin yanındaki kilit ikonlarına tıklayarak eklediğiniz değişkenleri kilitleyin.

azure devops secure variable
Adım 2:
İşimizin bittiği key.properties dosyasını artık silebiliriz .gitigone dosyasına mutlaka sildiğiniz dosyanın yolunu ekleyin:
android/key.properties
Bir sonraki adımda key.jks dosyamızı Azure’a taşıyalım.

Adım 3:
Azure DevOps -> Pipelines -> Library -> Secure Files sekmesine geçerek jks uzantılı key dosyanızı buraya ekleyin. Dosya ismini birazdan pipeline içerisinde kullanacağımız için dosya isimli önemlidir.

Adım 4:
Projenizin android -> app -> build.gradle dosyasında aşağıdaki değişikliklerin yapılması gerekiyor:

android {
…
    def storePasswordValue = System.getenv("STORE_PASSWORD")
    def keyPasswordValue   = System.getenv("KEY_PASSWORD")
    def keyAliasValue      = System.getenv("KEY_ALIAS")
    def storeFilePathValue = System.getenv("STORE_FILE")

    signingConfigs {
        release {
            storeFile = file(storeFilePathValue)
            storePassword = storePasswordValue
            keyAlias = keyAliasValue
            keyPassword = keyPasswordValue
        }
    }
…
}

Böylelikle build.gradle’a  enviroment dosyası içerisinde yer alan secret keylerden alınacak değişken isimlerini vermiş olduk.

Adım 5:
Pipeline’ı konfigüre edelim. Pipeline tarafından yönetilen .yml uzantılı dosyamızda jobs ‘ın altında yer alan variables altına group olarak enviromentimizi tanımlayalım. Bunu bütün steplerdeki job altında yer alan variables içerisine uygulayın:

- group: ${{ variables.groupEnvPrefix }}${{ variables.environment }}

Eğer projeniz Flutter projesi ise pub get işleminin yapıldığı argumentten sonra jks dosyasının getirilmesi için task ekleyin:

- task: DownloadSecureFile@1
  name: keystore
  inputs:
    secureFile: 'sensat.jks'
      - script: |
              echo "##vso[task.setvariable variable=STORE_FILE]$(keystore.secureFilePath)"
        displayName: 'Set keystore path'

Son adım olarak release apk ve app bundle aldığınız taskların hemen peşinden key dosyalarının yolunu ilgili değişkenlere atamanız gerekmektedir:

- task: FlutterCommand@0
  inputs:
    projectDirectory: '.'
    arguments: 'build apk --release'
  env:
    STORE_FILE: $(keystore.secureFilePath)
    STORE_PASSWORD: $(STORE_PASSWORD)
    KEY_PASSWORD: $(KEY_PASSWORD)
    KEY_ALIAS: $(KEY_ALIAS)

Yapacağımız işlemlerin tümü bu kadar. Artık pipeline’ı çalıştırarak güvenli bir çıktı alabilirsiniz. Flutter & Android projelerinde CI/CD sürecini Azure DevOps üzerinden yönetirken keystore şifrelerini hardcode etmek kısa vadede pratik görünse de, uzun vadede ciddi güvenlik ve bakım problemleri oluşturur. Özellikle ekip büyüdükçe, repo erişimleri arttıkça ve farklı ortamlarda (dev, staging, prod) build alınmaya başlandığında bu risk katlanarak büyür.

CI/CD tarafında yapılan küçük ama doğru mimari kararlar, uzun vadede sizi büyük güvenlik açıklarından ve operasyonel sorunlardan korur. Eğer Flutter projelerinizi profesyonel seviyeye taşımak ve Android release süreçlerinizi kurumsal güvenlik standartlarına uygun hale getirmek istiyorsanız, Secure Variable kullanımı artık bir tercih değil, gerekliliktir.


alim cevik
SendTweet4Share1Share
Önceki Gönderi

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

İlgili Yazılar

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

by Yazılım Karavanı
Mart 19, 2025
0

Dijitalleşmenin hız kazandığı günümüzde siber tehditler de aynı ölçüde artıyor. Türkiye Cumhuriyeti, siber güvenliği güçlendirmek ve kritik altyapıları korumak amacıyla...

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

by Yazılım Karavanı
Mart 10, 2025
0

Mobil geliştiriciler olarak Google Play politikalarındaki değişiklikleri takip etmek, uygulamalarımızın güncellenen kurallara uygun olmasını sağlamak açısından kritik bir öneme sahiptir....

OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

by Ali Murat Çevik
Aralık 14, 2024
0

Son günlerde ülkemizde bazı kurumların mobil uygulamalarından ard arda yetkisiz bildirimler gönderildiğine şahit olduk. Bu uygulamaların ortak yanının One Signal...

Flutter CI/CD Süreçleri (Azure DevOps Pipeline) – Part1/iOS

Flutter CI/CD Süreçleri (Azure DevOps Pipeline) – Part1/iOS

by Ali Murat Çevik
Mayıs 11, 2023
0

Herkese selamlar, bu yazıda yazılım geliştirme süreçlerinin verimliliğini ve çevikliğini artıracak bir konuyu ele almak istedim. Part1 olarak fazlandırdığım bu...

Risk Yönetimi ve Tehdit Modelleme

Risk Yönetimi ve Tehdit Modelleme

by Tunahan Tekeoğlu
Mayıs 5, 2023
0

Risk yönetimi ve tehdit modelleme, bilgi güvenliği alanında önemli bir konudur. Bu iki kavram, kurumların ve işletmelerin güvenlik açıklarını tespit...

  • Popüler
  • Yorumlar
  • En Yeniler
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Temmuz 26, 2021
B Ağaçları (B Trees)

B Ağaçları (B Trees)

Ağustos 24, 2020
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ağustos 20, 2020
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

Mayıs 18, 2018
2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

6
Magento 2 Detaylı Kurulum & Hatalar

Magento 2 Detaylı Kurulum & Hatalar

5
Flutter’da TFLite Kullanımı

Flutter’da TFLite Kullanımı

4
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

2
Azure DevOps ile Flutter & Android CI/CD Keystore Şifrelerini Hardcode Etmeden Güvenli Saklamak (Secure Variable)

Azure DevOps ile Flutter & Android CI/CD Keystore Şifrelerini Hardcode Etmeden Güvenli Saklamak (Secure Variable)

Şubat 28, 2026
Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Mart 19, 2025
Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Mart 10, 2025
Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Şubat 10, 2025

Reklam

Yazılım Karavanı | Bilim – Teknoloji – Mühendislik

Bilgi Teknolojileri alanına meraklı herkesin buluşma noktası!

No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar

© 2020 Yazılım Karavanı Kaynak gösterilmesini rica ederiz.