Ich muss Geheimnisse von keyvault abrufen. Dies ist mein Code so weit:Python Azure sdk: Wie man Geheimnisse von keyvault holt?
from azure.mgmt.keyvault import KeyVaultManagementClient
from azure.common.credentials import ServicePrincipalCredentials
subscription_id = 'x'
# See above for details on creating different types of AAD credentials
credentials = ServicePrincipalCredentials(
client_id = 'x',
secret = 'x',
tenant = 'x'
)
kv_client = KeyVaultManagementClient(credentials, subscription_id)
for vault in kv_client.vaults.list():
print(vault)
Aber ich bin immer diese Fehlermeldung:
msrestazure.azure_exceptions.CloudError: Azure Error: AuthorizationFailed Message: The client 'x' with object id 'x' does not have authorization to perform action 'Microsoft.Resources/subscriptions/resources/read' over scope '/subscriptions/x'.
Jetzt bin ich in der Lage mit dem gleichen Anmeldeinformationen die gleiche keyvault für den Zugriff auf C# Code/Power so gibt es definitiv nichts falsch mit Genehmigung. Nicht sicher, warum es nicht mit SDK funktioniert. Bitte helfen Sie.
Keine Ahnung, der Bearer Token könnte die falsche Zielgruppe haben oder etwas in dieser Richtung - versuchen Sie, in https://github.com/Azure/azure-sdk-for-python/issues zu fragen, wenn Sie sicher sind, dass der SPN ist gut für diese Ressource. Versuchen Sie, einen Weg zu finden, die Ablaufverfolgung zu aktivieren, vielleicht gibt es Hinweise darauf, was im Token enthalten ist. – evilSnobu
Ihr Code funktioniert für mich, ich könnte Geheimnisse im Schlüsseltresor auflisten. Wenn möglich, könnten Sie Ihrer Servicepresse "Owner" -Permission geben und es erneut versuchen. [Anwendung der Rolle zuweisen] (https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-serviceprincipal-portal#assign-application-to-role). –
Auch können Sie 'Contributor' Erlaubnis geben, es funktioniert auch für mich. Es ist sehr seltsam, ich bin mir nicht sicher, warum der Service-Principal auf C# und PowerShell funktioniert. Aber ich schlage vor, Sie könnten überprüfen und versuchen, die Erlaubnis zu geben. –