· kaynak Vercel blog
Vercel Container Registry login action'ı, uzun ömürlü kimlik bilgilerini ortadan kaldırmak için GitHub OIDC kullanıyor
Vercel'in yeni vcr-action/login GitHub Action'ı, workflow'un OIDC token'ını kısa ömürlü bir Vercel token'ı ile takas ediyor; böylece CI, saklanan registry secret'ları olmadan Vercel Container Registry'ye push yapabiliyor.

Ne yayınlandı
Vercel, saklanan registry kimlik bilgilerine olan ihtiyacı ortadan kaldıran bir GitHub Actions login action'ı yayınladı. Bir Vercel changelog kaydına göre, yeni vercel/vcr-action/login action'ı, bir workflow'un Vercel Container Registry'ye (VCR) kimlik doğrulaması yapmasını ve vcr.vercel.com'a image'ları, yalnızca job'un kendi kimliğini kullanarak push etmesini sağlıyor.
OIDC takası nasıl çalışıyor
Action, GitHub'ın OpenID Connect desteği üzerine inşa edilmiş. Çalışma zamanında workflow'un OIDC token'ını Vercel'e sunuyor, karşılığında kısa ömürlü bir access token alıyor ve bu token'ı registry'ye giriş yapmak için kullanıyor. Job sona erdiğinde action çıkış yapıyor ve Vercel token'ını iptal ediyor; böylece çalışmanın ömründen uzun süre dayanabilecek, yeniden kullanılabilir bir kimlik bilgisi kalmıyor.
Sınırı Vercel kendi tarafında kontrol ediyor: Takas yalnızca, takımdaki bir OIDC policy'si isteği yapan tam depoyu ve workflow'u işaret ettiğinde başarılı oluyor ve bu policy ayrıca izin düzeyini de sabitliyor; örneğin VCR'ye okuma-yazma erişimi. Dolayısıyla bir pipeline'a verilen token, farklı bir depodan veya workflow'tan yeniden kullanılamıyor.
Kurulum ne gerektiriyor
Changelog dört ön koşul sıralıyor:
- GitHub deposuna ve workflow'a kapsamlı, registry'ye okuma-yazma erişimi veren, Vercel takımı üzerinde bir OIDC policy'si.
- Vercel takım kimliğini (örneğin
VERCEL_TEAM_ID) ve image tag'ini oluşturan takım slug'ı, proje slug'ı ile depo adını tutan repository değişkenleri. - GitHub'ın OIDC token'ını üretmesini yetkilendiren, job veya workflow düzeyinde
id-token: writeizni. - Build-and-push adımından önce yerleştirilen bir login adımı.
Workflow'un temel yapısı şöyle:
yaml permissions: contents: read id-token: write
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Log in to VCR uses: vercel/vcr-action/login@v1 with: team: ${{ vars.VERCEL_TEAM_ID }}
- name: Build and push uses: docker/build-push-action@v6 with: tags: vcr.vercel.com/${{ vars.VERCEL_TEAM_SLUG }}/${{ vars.VERCEL_PROJECT_SLUG }}/${{ vars.VCR_REPOSITORY }}:latest
Vercel'in tam örneği ayrıca linux/amd64 platform hedefi ve zstd ile sıkıştırılmış OCI image çıktısı yapılandırıyor.
Engine'ler ve sandbox image'ları
Docker varsayılan olarak kimlik doğrulamasından geçiyor. Changelog'a göre action, Podman veya Buildah ile build yapan takımlar için bir engines ayarı da kabul ediyor. VCR bir linux/amd64 image'ı hazırladığında, bu image aynı zamanda özel bir Vercel Sandbox image'ı olarak da kullanılabiliyor; aynı proje içinde depo adı ve tag ile referans veriliyor.
Neden önemli
Statik registry token'ları kalıcı bir risktir: secret manager'larda dururlar, yanlış kullanıldıklarında log'lara sızarlar ve onlara ihtiyaç duyan pipeline ortadan kalktıktan çok sonra bile geçerli kalırlar. Kimlik doğrulamasını OIDC aracılığıyla job'un kimliğine bağlamak, bu secret sınıfını tamamen ortadan kaldırıyor; çünkü kimlik bilgisi yalnızca çalışma süresince var oluyor ve çalışma biter bitmez iptal ediliyor. Bu hamle, Vercel'i yıllardır workload-identity federation sunan büyük cloud registry'lerle aynı hizaya getiriyor. GitHub Actions'ta zaten build yapan takımlar için geçiş bilinçli olarak ucuz: Vercel takımında tek bir policy, birkaç repository değişkeni ve workflow'a tek bir ek adım.
- #vercel
- #github-actions
- #oidc
- #containers
- #security