Share via


Azure CLI kullanarak uygulama rolüne yönetilen kimlik erişimi atama

Azure kaynakları için yönetilen kimlikler, Azure hizmetlerine Microsoft Entra Id'de bir kimlik sağlar. Kodunuzda kimlik bilgilerine gerek kalmadan çalışır. Azure hizmetleri, Microsoft Entra kimlik doğrulamasını destekleyen hizmetlerde kimlik doğrulaması yapmak için bu kimliği kullanır. Uygulama rolleri bir rol tabanlı erişim denetimi biçimi sağlar ve bir hizmetin yetkilendirme kuralları uygulamasına izin verir.

Not

Uygulamanızın aldığı belirteçler, temel alınan altyapı tarafından önbelleğe alınır ve bu da yönetilen kimliğin rollerindeki değişikliklerin etkili olması için önemli ölçüde zaman alabileceği anlamına gelir. Daha fazla bilgi için bkz . Yetkilendirme için yönetilen kimlikleri kullanma sınırlaması.

Bu makalede, Azure CLI kullanarak başka bir uygulama tarafından kullanıma sunulan bir uygulama rolüne yönetilen kimlik atamayı öğreneceksiniz.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Başka bir uygulamanın uygulama rolüne yönetilen kimlik erişimi atama

  1. Azure VM gibi bir Azure kaynağında yönetilen kimliği etkinleştirin.

  2. Yönetilen kimliğin hizmet sorumlusunun nesne kimliğini bulun.

    Sistem tarafından atanan yönetilen kimlik için nesne kimliğini Kaynağın Kimlik sayfasında Azure portalında bulabilirsiniz. Nesne kimliğini bulmak için aşağıdaki betiği de kullanabilirsiniz. 1. adımda oluşturduğunuz kaynağın kaynak kimliğine ihtiyacınız vardır. Bu kimlik, kaynağın Özellikler sayfasındaki Azure portalında sağlanır.

    resourceIdWithManagedIdentity="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.Compute/virtualMachines/{my virtual machine name}"
    
    oidForMI=$(az resource show --ids $resourceIdWithManagedIdentity --query "identity.principalId" -o tsv | tr -d '[:space:]')
    echo "object id for managed identity is: $oidForMI"
    

    Kullanıcı tarafından atanan yönetilen kimlik için yönetilen kimliğin nesne kimliğini Kaynağın Genel Bakış sayfasında Azure portalında bulabilirsiniz. Nesne kimliğini bulmak için aşağıdaki betiği de kullanabilirsiniz. Kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliği gerekir.

    userManagedIdentityResourceId="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{my managed identity name}"
    
    oidForMI=$(az resource show --id $userManagedIdentityResourceId --query "properties.principalId" -o tsv | tr -d '[:space:]')
    echo "object id for managed identity is: $oidForMI"
    
  3. Yönetilen kimliğinizin istek göndereceği hizmeti temsil etmek için yeni bir uygulama kaydı oluşturun. Yönetilen kimliğe uygulama rolü verme iznini kullanıma sunan API veya hizmetin Microsoft Entra kiracınızda zaten bir hizmet sorumlusu varsa, bu adımı atlayın.

  4. Hizmet uygulamasının hizmet sorumlusunun nesne kimliğini bulun. Bunu Azure portalını kullanarak bulabilirsiniz. Microsoft Entra Id'ye gidin ve Kurumsal uygulamalar sayfasını açın, ardından uygulamayı bulun ve Nesne Kimliği'ni arayın. Aşağıdaki betiği kullanarak hizmet sorumlusunun nesne kimliğini görünen adına göre de bulabilirsiniz:

    appName="{name for your application}"
    serverSPOID=$(az ad sp list --filter "displayName eq '$appName'" --query '[0].id' -o tsv | tr -d '[:space:]')
    echo "object id for server service principal is: $serverSPOID"
    

    Not

    Uygulamaların görünen adları benzersiz değildir, bu nedenle doğru uygulamanın hizmet sorumlusunu aldığınızı doğrulamanız gerekir.

    Alternatif olarak, uygulama kaydınızın benzersiz Uygulama Kimliğine göre Nesne Kimliğini bulabilirsiniz:

    appID="{application id for your application}"
    serverSPOID=$(az ad sp list --filter "appId eq '$appID'" --query '[0].id' -o tsv | tr -d '[:space:]')
    echo "object id for server service principal is: $serverSPOID"
    
  5. 3. adımda oluşturduğunuz uygulamaya bir uygulama rolü ekleyin. Rolü Azure portalını veya Microsoft Graph'i kullanarak oluşturabilirsiniz. Örneğin, aşağıdaki gibi bir uygulama rolü ekleyebilirsiniz:

    {
        "allowedMemberTypes": [
            "Application"
        ],
        "displayName": "Read data from MyApi",
        "id": "0566419e-bb95-4d9d-a4f8-ed9a0f147fa6",
        "isEnabled": true,
        "description": "Allow the application to read data as itself.",
        "value": "MyApi.Read.All"
    }
    
  6. Yönetilen kimliğe uygulama rolünü atayın. Uygulama rolünü atamak için aşağıdaki bilgilere ihtiyacınız olacaktır:

    • managedIdentityObjectId: 2. adımda bulduğunuz yönetilen kimliğin hizmet sorumlusunun nesne kimliği.
    • serverServicePrincipalObjectId: 4. adımda bulduğunuz sunucu uygulamasının hizmet sorumlusunun nesne kimliği.
    • appRoleId: 5. adımda oluşturduğunuz sunucu uygulaması tarafından kullanıma sunulan uygulama rolünün kimliğidir. Örnekte, uygulama rolü kimliği şeklindedir 00000000-0000-0000-0000-000000000000.

    Rol atamasını eklemek için aşağıdaki betiği yürütür. Bu işlevin Azure CLI'da doğrudan kullanıma sunulmadığını ve bunun yerine burada bir REST komutunun kullanıldığını unutmayın:

    roleguid="00000000-0000-0000-0000-000000000000"
    az rest -m POST -u https://graph.microsoft.com/v1.0/servicePrincipals/$oidForMI/appRoleAssignments -b "{\"principalId\": \"$oidForMI\", \"resourceId\": \"$serverSPOID\",\"appRoleId\": \"$roleguid\"}"
    

Sonraki adımlar