Aracılığıyla paylaş


Go için Azure SDK'sını kullanarak Azure hizmetlerinde Go uygulamalarının kimliğini doğrulama

Bir uygulamanın Azure Depolama, Azure Key Vault veya Azure AI hizmetleri gibi bir Azure kaynağına erişmesi gerektiğinde, uygulamanın Azure'da kimliğinin doğrulanması gerekir. Azure'a dağıtılan, şirket içinde dağıtılan veya yerel geliştirici iş istasyonunda geliştirme aşamasında olan tüm uygulamalar için bu gereksinim geçerlidir. Bu makalede, Go için Azure SDK'sını kullandığınızda Azure'da bir uygulamanın kimliğini doğrulamak için önerilen yaklaşımlar açıklanmaktadır.

Azure kaynaklarında kimlik doğrulaması yaparken uygulamalarınız için bağlantı dizeleri yerine belirteç tabanlı kimlik doğrulaması kullanın. Go için Azure SDK, belirteç tabanlı kimlik doğrulamasını destekleyen mekanizmalar sağlar. Uygulama yerel geliştirme aşamasında, Azure'a dağıtılmış veya şirket içi bir sunucuya dağıtılmış olsun, uygulamalar Azure kaynaklarında sorunsuz bir şekilde kimlik doğrulaması yapabilir.

Bir uygulamanın Azure kaynaklarında kimlik doğrulaması yapmak için kullandığı belirteç tabanlı kimlik doğrulaması türü, uygulamanın çalıştırıldığı yere bağlıdır. Belirteç tabanlı kimlik doğrulaması türleri aşağıdaki diyagramda gösterilmiştir.

Çalıştığı yere bağlı olarak bir uygulama için önerilen belirteç tabanlı kimlik doğrulama stratejilerini gösteren diyagram.

  • Yerel geliştirme sırasında bir geliştirici bir uygulama çalıştırdığında: Uygulama, yerel geliştirme için bir uygulama hizmet sorumlusu veya geliştiricinin Azure kimlik bilgilerini kullanarak Azure'da kimlik doğrulaması yapar. Bu seçenekler, yerel geliştirmesırasında kimlik doğrulaması bölümünde açıklanmıştır.
  • Bir uygulama Azure'da barındırıldığında: Uygulama yönetilen kimlik kullanarak Azure kaynaklarında kimlik doğrulaması yapar. Bu seçenek,sunucu ortamlarında kimlik doğrulaması bölümünde açıklanmıştır.
  • Bir uygulama şirket içinde barındırıldığında ve dağıtıldığında: Uygulama, uygulama hizmet sorumlusu kullanarak Azure kaynaklarında kimlik doğrulaması yapar. Bu seçenek,sunucu ortamlarında kimlik doğrulaması bölümünde açıklanmıştır.

DefaultAzureCredential

Azure SDK tarafından sağlanan DefaultAzureCredential türü, uygulamaların çalıştırıldığı ortama bağlı olarak farklı kimlik doğrulama yöntemleri kullanmasına olanak tanır. Bu şekilde uygulamalar yerel geliştirmeden test ortamlarına, kod değişikliği olmadan üretime yükseltilebilir.

Her ortam için uygun kimlik doğrulama yöntemini yapılandırıp DefaultAzureCredential bu kimlik doğrulama yöntemini otomatik olarak algılar ve kullanırsınız. DefaultAzureCredential kullanımı, farklı ortamlarda farklı kimlik doğrulama yöntemlerini kullanmak için koşullu mantığı veya özellik bayraklarını el ile kodlamak yerine tercih edilir.

türünü kullanma hakkındaki ayrıntılar,bir uygulamada DefaultAzureCredential kullanma bölümünde açıklanmıştır.

Belirteç tabanlı kimlik doğrulamasının avantajları

Azure için uygulama oluştururken bağlantı dizelerini kullanmak yerine belirteç tabanlı kimlik doğrulamasını kullanın. Belirteç tabanlı kimlik doğrulaması, bağlantı dizeleriyle kimlik doğrulamasına göre aşağıdaki avantajları sunar:

  • Bu makalede açıklanan belirteç tabanlı kimlik doğrulama yöntemleri, Azure kaynağında uygulamanın ihtiyaç duyduğu belirli izinleri oluşturmanıza olanak sağlar. Bu uygulama, en az ayrıcalıklılık ilkesiniizler. Buna karşılık, bir bağlantı dizesi Azure kaynağına tam haklar verir.
  • Bağlantı dizesi olan herkes veya herhangi bir uygulama Bir Azure kaynağına bağlanabilir, ancak belirteç tabanlı kimlik doğrulama yöntemleri kaynağa erişimi yalnızca kaynağa erişmeyi amaçlanan uygulamalarla kapsama alır.
  • Yönetilen kimlikle depolanacak bir uygulama gizliliği yoktur. Gizliliği ihlal edilebilecek bir bağlantı dizesi veya uygulama gizli dizisi olmadığından uygulama daha güvenlidir.
  • Azure SDK'daki azidentity paketi, arka planda sizin için belirteçleri yönetir. Yönetilen belirteçler, belirteç tabanlı kimlik doğrulamasını bağlantı dizesi olarak kullanmayı kolaylaştırır.

Bağlantı dizelerinin kullanımını, üretim veya hassas verilere erişmeyen ilk kavram kanıtı uygulamaları veya geliştirme prototipleriyle sınırlayın. Aksi takdirde Azure sdk'sında bulunan belirteç tabanlı kimlik doğrulaması, Azure kaynaklarında kimlik doğrulaması yapılırken her zaman tercih edilir.

Sunucu ortamlarında kimlik doğrulaması

Bir sunucu ortamında barındırırken, her uygulamaya uygulamanın çalıştığı ortam başına benzersiz bir uygulama kimliği atanır. Azure'da uygulama kimliği,hizmet sorumlusu tarafından temsil edilir. Bu özel güvenlik sorumlusu türü, uygulamaları tanımlar ve Azure'da kimlik doğrulaması yapar. Uygulamanız için kullanılacak hizmet sorumlusunun türü, uygulamanızın çalıştığı yere bağlıdır:

Kimlik doğrulama yöntemi Açıklama
Azure'da barındırılan uygulamalar Azure'da barındırılan uygulamalar, bir yönetilen kimlik hizmeti ilkesikullanmalıdır. Yönetilen kimlikler, Azure'da barındırılan bir uygulamanın kimliğini temsil etmek üzere tasarlanmıştır ve yalnızca Azure tarafından barındırılan uygulamalarla kullanılabilir.

Örneğin, Azure Container Apps'te barındırılan bir Gin web uygulamasına yönetilen kimlik atanır. Ardından uygulamaya atanan yönetilen kimlik, uygulamanın diğer Azure hizmetlerinde kimliğini doğrulamak için kullanılır.

Azure Kubernetes Service'te (AKS) çalışan uygulamalar bir İş yükü kimliği kimlik bilgilerini kullanabilir. Bu kimlik bilgisi, AKS hizmet hesabıyla güven ilişkisi olan yönetilen kimliği temel alır.

Azure dışında barındırılan uygulamalar
(örneğin, şirket içi uygulamalar)
Azure hizmetlerine bağlanması gereken Azure dışında barındırılan uygulamalar (örneğin, şirket içi uygulamalar) bir uygulama hizmet sorumlusukullanmalıdır. Uygulama hizmet sorumlusu, Azure'daki uygulamanın kimliğini temsil eder ve uygulama kayıt işlemi aracılığıyla oluşturulur.

Örneğin, Azure Blob Depolama'yı kullanan bir Gin web uygulamasını, şirket içinde barındırılan bir ortamda düşünün. Uygulama kayıt işlemini kullanarak uygulama için bir uygulama hizmet sorumlusu oluşturabilirsiniz. AZURE_CLIENT_ID, AZURE_TENANT_IDve AZURE_CLIENT_SECRET, çalışma zamanında uygulama tarafından okunacak ortam değişkenleri olarak depolanır ve uygulamanın uygulama hizmet sorumlusunu kullanarak Azure'da kimlik doğrulamasına izin verir.

Azure dışında barındırılan uygulamalardan kimlik doğrulaması hakkında bilgi edinin

Yerel geliştirme sırasında kimlik doğrulaması

Bir uygulama yerel geliştirme sırasında bir geliştiricinin iş istasyonunda çalıştığında, yine de uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapmalıdır. Yerel geliştirme sırasında Azure'da uygulamaların kimliğini doğrulamak için iki ana strateji vardır:

Kimlik doğrulama yöntemi Açıklama
Yerel geliştirme sırasında kullanılacak özel uygulama hizmet asıl öznelerini oluşturun. Bu yöntemde, yerel geliştirme sırasında kullanılmak üzere uygulama kayıt işlemi kullanılarak ayrılmış uygulama hizmet sorumlusu nesneleri ayarlanır. Hizmet sorumlusunun kimliği daha sonra yerel geliştirmede çalıştırıldığında uygulama tarafından erişilecek ortam değişkenleri olarak depolanır.

Bu yöntem, yerel geliştirme sırasında geliştiriciler tarafından kullanılan hizmet sorumlusu nesnelerine uygulama için gereken belirli kaynak izinlerini atamanızı sağlar. Bu uygulama, uygulamanın yalnızca ihtiyaç duyduğu belirli kaynaklara erişmesini sağlar ve uygulamanın üretimde sahip olacağı izinleri çoğaltır.

Bu yaklaşımın dezavantajı, bir uygulama üzerinde çalışan her geliştirici için ayrı hizmet sorumlusu nesneleri oluşturma gereksinimidir.

Yerel geliştirme sırasında geliştiricinin kimlik bilgilerini kullanarak uygulamanın Kimliğini Azure'da doğrular. Bu yöntemde, bir geliştiricinin yerel iş istasyonunda Azure CLI veya Azure Developer CLI'dan Azure'da oturum açması gerekir. Daha sonra uygulama, geliştiricinin kimlik bilgilerine kimlik bilgisi deposundan erişebilir ve bu kimlik bilgilerini kullanarak uygulamadan Azure kaynaklarına erişebilir.

Bir geliştiricinin yalnızca yukarıda belirtilen geliştirici araçlarından biri aracılığıyla Azure hesabında oturum açması gerektiğinden, bu yöntem daha kolay kurulum avantajına sahiptir. Bu yaklaşımın dezavantajı, geliştirici hesabının büyük olasılıkla uygulama için gerekenden daha fazla izine sahip olmasıdır. Sonuç olarak, uygulama üretim ortamında sahip olacağı izinleri doğru bir şekilde yansıtmaz.

Uygulamada DefaultAzureCredential kullanma

DefaultAzureCredential, Microsoft Entra ID'de kimlik doğrulamak için belirli bir varsayılan ve sıralı mekanizma dizisidir. Her kimlik doğrulama mekanizması, TokenCredential arabirimini uygulayan ve kimlik bilgisiolarak bilinen bir sınıftır. çalışma zamanında, DefaultAzureCredential ilk kimlik bilgilerini kullanarak kimlik doğrulamayı dener. Bu kimlik bilgisi bir erişim belirteci alamazsa, bir erişim belirteci başarıyla alınana kadar dizideki bir sonraki kimlik bilgisi denenir ve bu şekilde devam edilir. Bu şekilde, uygulamanız ortama özgü kod yazmadan farklı ortamlarda farklı kimlik bilgilerini kullanabilir.

Go uygulamasında DefaultAzureCredential kullanmak için azidentity paketini uygulamanıza ekleyin.

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Aşağıdaki kod örneği, DefaultAzureCredentialile Azure SDK istemcisi örneğinin nasıl oluşturulacağını gösterir. Azure Blob Depolama'ya erişim sağlamak için kullanılan istemci azblob’dır.

import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

const (
	account       = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"
	containerName = "sample-container"
	blobName      = "sample-blob"
	sampleFile    = "path/to/sample/file"
)

func main() {
    // create a credential
    cred, err := azidentity.NewDefaultAzureCredential(nil)
    if err != nil {
      // TODO: handle error
    }
    
    // create a client for the specified storage account
    client, err := azblob.NewClient(account, cred, nil)
    if err != nil {
      // TODO: handle error
    }
    
    // TODO: perform some action with the azblob Client
    // _, err = client.DownloadFile(context.TODO(), <containerName>, <blobName>, <target_file>, <DownloadFileOptions>)
}

Yukarıdaki kod yerel geliştirme iş istasyonunuzda çalıştırıldığında, bir uygulama hizmet sorumlusunun ortam değişkenlerini veya bir dizi geliştirici kimlik bilgisi için Azure CLI gibi yerel olarak yüklenen geliştirici araçlarını arar. Her iki yaklaşım da yerel geliştirme sırasında azure kaynaklarında uygulamanın kimliğini doğrulamak için kullanılabilir.

Azure'a dağıtıldığında, aynı kod uygulamanızın kimliğini Azure kaynaklarda da doğrulayabilir. DefaultAzureCredential, Azure hizmetlerinde otomatik olarak kimlik doğrulaması yapmak için ortam ayarlarını ve yönetilen kimlik yapılandırmalarını alabilir.

  • GitHub'de Go için Azure Identity istemci kitaplığı README
  • pkg.go.dev'de Azure Identity istemci kitaplığı referansı