Azure Arc özellikli sunucularla Azure kaynaklarında kimlik doğrulaması

Doğrudan Azure Arc özellikli sunucularda çalışan uygulamalar veya işlemler, Microsoft Entra ID tabanlı kimlik doğrulamasını destekleyen diğer Azure kaynaklarına erişmek için yönetilen kimlikleri kullanabilir. Bir uygulama, Azure Arc özellikli sunucular için sistem tarafından atanan kimliğini temsil eden bir erişim belirteci alabilir ve başka bir hizmette kimliğini doğrulamak için bunu 'taşıyıcı' belirteç olarak kullanabilir.

Yönetilen kimliklerin ayrıntılı açıklaması için yönetilen kimliğe genel bakış belgelerine bakın ve sistem tarafından atanan ve kullanıcı tarafından atanan kimlikler arasındaki ayrımı anlayın.

Bu makalede, bir sunucunun Azure Key Vault'a erişmek için sistem tarafından atanan yönetilen kimliği nasıl kullanabileceğini göstereceğiz. Bootstrap olarak hizmet veren Key Vault, istemci uygulamanızın Microsoft Entra Id ile güvenliği sağlanmayan kaynaklara erişmek için gizli dizi kullanmasını mümkün kılar. Örneğin, IIS web sunucularınız tarafından kullanılan TLS/SSL sertifikaları Azure Key Vault'ta depolanabilir ve sertifikaları Azure dışındaki Windows veya Linux sunucularına güvenli bir şekilde dağıtabilir.

Güvenliğe genel bakış

Sunucunuz Azure Arc özellikli sunuculara eklenirken, Azure VM için gerçekleştirilenlere benzer şekilde yönetilen kimlik kullanarak yapılandırmaya yönelik çeşitli eylemler gerçekleştirilir:

  • Azure Resource Manager, Azure Arc özellikli sunucuda sistem tarafından atanan yönetilen kimliği etkinleştirme isteği alır.

  • Azure Resource Manager, sunucunun kimliği için Microsoft Entra Kimliği'nde bir hizmet sorumlusu oluşturur. Hizmet sorumlusu, abonelik tarafından güvenilen Microsoft Entra kiracısında oluşturulur.

  • Azure Resource Manager, Windows veya Linux için Azure Örnek Meta Veri Hizmeti (IMDS) kimlik uç noktasını hizmet sorumlusu istemci kimliği ve sertifikasıyla güncelleştirerek sunucudaki kimliği yapılandırıyor. Uç nokta, yalnızca iyi bilinen, yönlendirilemeyen bir IP adresi kullanan sunucunun içinden erişilebilen bir REST uç noktasıdır. Bu hizmet, Azure Arc özellikli sunucuyla ilgili meta veri bilgilerini yönetmeye ve yapılandırmaya yardımcı olacak bir alt küme sağlar.

Yönetilen kimlik özellikli bir sunucunun ortamı, Windows Azure Arc özellikli bir sunucuda aşağıdaki değişkenlerle yapılandırılır:

  • IMDS_ENDPOINT: Azure Arc özellikli sunucular için IMDS uç nokta IP adresihttp://localhost:40342.

  • IDENTITY_ENDPOINT: hizmetin yönetilen kimliğine http://localhost:40342/metadata/identity/oauth2/tokenkarşılık gelen localhost uç noktası.

Sunucuda çalışan kodunuz, Azure Örneği Meta Verileri hizmet uç noktasından yalnızca sunucunun içinden erişilebilen bir belirteç isteyebilir.

IDENTITY_ENDPOINT sistem ortamı değişkeni, uygulamalara göre kimlik uç noktasını bulmak için kullanılır. Uygulamalar IDENTITY_ENDPOINT ve IMDS_ENDPOINT değerleri alıp bunları kullanmaya çalışmalıdır. Herhangi bir erişim düzeyine sahip uygulamaların uç noktalara istekte bulunmalarına izin verilir. Meta veri yanıtları normal şekilde işlenir ve makinedeki herhangi bir işleme verilir. Ancak, belirteci kullanıma sunacak bir istek yapıldığında, istemcinin yalnızca daha yüksek ayrıcalıklı kullanıcılar tarafından kullanılabilen verilere erişebildiğini kanıtlayan bir gizli dizi sağlaması gerekir.

Önkoşullar

  • Yönetilen kimlikleri anlama.

  • Windows'da, yerel Yöneticiler grubunun veya Karma Aracı Uzantısı Uygulamaları grubunun üyesi olmanız gerekir.

  • Linux'ta himds grubunun bir üyesi olmanız gerekir.

  • Azure Arc özellikli sunuculara bağlı ve kayıtlı bir sunucu.

  • Gerekli kaynak oluşturma ve rol yönetimi adımlarını gerçekleştirmek için abonelik veya kaynak grubundaki Sahip grubunun bir üyesisiniz.

  • Kimlik bilgilerinizi depolamak ve almak ve Azure Arc kimliği erişimini KeyVault'a atamak için bir Azure Key Vault.

    • Oluşturulmuş bir Key Vault'nuz yoksa bkz . Key Vault oluşturma.
    • Sunucu tarafından kullanılan yönetilen kimliğe göre erişimi yapılandırmak için bkz . Linux için erişim verme veya Windows için erişim verme. 5. adım için Azure Arc özellikli sunucunun adını gireceksiniz. Bunu PowerShell kullanarak tamamlamak için bkz . PowerShell kullanarak erişim ilkesi atama.

REST API kullanarak erişim belirteci alma

Azure kaynaklarıyla kimlik doğrulaması yapmak için sistem tarafından atanan yönetilen kimliği alma ve kullanma yöntemi, Azure VM ile gerçekleştirilen yönteme benzer.

Azure Arc özellikli bir Windows sunucusu için PowerShell kullanarak belirteci belirli bir bağlantı noktasındaki yerel konaktan almak için web isteğini çağırırsınız. IP adresini veya ortam değişkeni IDENTITY_ENDPOINT kullanarak isteği belirtin.

$apiVersion = "2020-06-01"
$resource = "https://management.azure.com/"
$endpoint = "{0}?resource={1}&api-version={2}" -f $env:IDENTITY_ENDPOINT,$resource,$apiVersion
$secretFile = ""
try
{
    Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing
}
catch
{
    $wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
    if ($wwwAuthHeader -match "Basic realm=.+")
    {
        $secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
    }
}
Write-Host "Secret file path: " $secretFile`n
$secret = cat -Raw $secretFile
$response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
if ($response)
{
    $token = (ConvertFrom-Json -InputObject $response.Content).access_token
    Write-Host "Access token: " $token
}

Aşağıdaki yanıt, döndürülen bir örnektir:

PowerShell kullanılarak erişim belirtecinin başarıyla alınması.

Azure Arc özellikli bir Linux sunucusu için Bash kullanarak web isteğini çağırarak belirteci belirli bir bağlantı noktasındaki yerel konaktan alırsınız. IP adresini veya ortam değişkeni IDENTITY_ENDPOINT kullanarak aşağıdaki isteği belirtin. Bu adımı tamamlamak için bir SSH istemcisi gerekir.

CHALLENGE_TOKEN_PATH=$(curl -s -D - -H Metadata:true "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com" | grep Www-Authenticate | cut -d "=" -f 2 | tr -d "[:cntrl:]")
CHALLENGE_TOKEN=$(cat $CHALLENGE_TOKEN_PATH)
if [ $? -ne 0 ]; then
    echo "Could not retrieve challenge token, double check that this command is run with root privileges."
else
    curl -s -H Metadata:true -H "Authorization: Basic $CHALLENGE_TOKEN" "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com"
fi

Aşağıdaki yanıt, döndürülen bir örnektir:

Bash kullanılarak erişim belirtecinin başarıyla alınması.

Yanıt, Azure'daki herhangi bir kaynağa erişmek için ihtiyacınız olan erişim belirtecini içerir. Azure Key Vault'ta kimlik doğrulaması yapmak üzere yapılandırmayı tamamlamak için bkz . Windows ile Key Vault'a erişme veya Linux ile Key Vault'a erişme.

Sonraki adımlar