Saya membuat cluster AKS melalui Azure CLI.

Sesuatu seperti:

az aks create 
    --resource-group RESOURCE-GROUP
    --name "mycluster"
    --enable-managed-identity
    --network-plugin "azure"
    --no-ssh-key
    ...

Setelah pembuatan, saya mendapatkan identitas terkelola mycluster-agentpool. Saya telah menambahkan ke identitas itu peran "Kontributor Jaringan" ke grup Sumber Daya tempat PublicIP berada. Saya menunggu lebih dari satu jam.

Tapi saya masih mendapatkan kesalahan ini dari layanan nginx:

network.PublicIPAddressesClient#List: Failure responding to request: StatusCode=403 -- 
Original Error: autorest/azure: Service returned an error. 
Status=403 
Code="AuthorizationFailed" 
Message="The client '00000000-0000-0000-0000-00000000' with object id '00000000-0000-0000-0000-00000000' does not have authorization to perform action 
'Microsoft.Network/publicIPAddresses/read' over scope 
'/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/RESOURCE-GROUP/providers/Microsoft.Network' or the scope is invalid. 
If access was recently granted, please refresh your credentials."

Yang menurut saya aneh adalah setelah membuat cluster dan menanyakan "identitas":

az aks show -g RESOURCE-GROUP -n mycluster --query "identity"

Saya mendapatkan (contoh GUID):

{
  "principalId": "00000000-1234-1234-1234-00000000",
  "tenantId": "00000000-5678-5678-5678-00000000",
  "type": "SystemAssigned",
  "userAssignedIdentities": null
}

Dan principalId ini tidak cocok dengan ObjectId dari identitas mycluster-agentpool, dan saya tidak dapat menemukan tempatnya, karena saya menduga principalId adalah identitas yang membutuhkan hak.

Dengan identitas apa layanan nginx mencoba terhubung?

0
carraua 20 November 2020, 20:36

1 menjawab

Jawaban Terbaik

Menurut penelitian, saya menemukan ketika Anda mengaktifkan Identitas Terkelola untuk AKS, maka properti AKS menunjukkan servicePrincipalProfile dengan MSI. Dan ketika Anda ingin mengaitkan alamat IP publik di grup sumber daya lain, maka Anda perlu memberikan peran "Kontributor Jaringan" ke Identitas Terkelola AKS, Anda bisa mendapatkan ID utama melalui CLI seperti yang Anda tunjukkan:

az aks show -g RESOURCE-GROUP -n mycluster --query "identity.principalId"

Anda mendapatkan detail selengkapnya tentang Identitas Terkelola di sini untuk "Kontributor Jaringan". Ini menunjukkan bahwa identitas untuk bidang kontrol mengelola sumber daya jaringan termasuk penyeimbang beban masuk dan IP publik yang dikelola AKS. Dan perintah CLI di atas menunjukkan identitas pesawat kontrol kepada Anda.

Id utama ini adalah Id objek dan Anda bisa mendapatkan prinsipal layanan melalui CLI seperti ini:

az ad sp show --id principalId
0
Charles Xu 24 November 2020, 09:06