Verificatie met de Azure SDK voor Go (verouderd)
Belangrijk
Dit artikel is van toepassing op de verouderde versie van de Azure SDK voor Go. Voor verificatie bij de nieuwste modules wordt het Azure Identity-pakket gebruikt.
De Azure SDK voor Go biedt meerdere manieren voor verificatie met Azure. Deze verificatietypen worden via verschillende verificatiemethoden aangeroepen. In dit artikel worden de verschillende typen en methoden beschreven en leert u hoe u kiest welke het geschiktst zijn voor uw toepassing.
Beschikbare verificatietypen en -methoden
De Azure SDK voor Go biedt verschillende typen verificatie met verschillende referentiesets. Elk verificatietype is beschikbaar via verschillende verificatiemethoden, die bepalen hoe SDK deze referenties gebruikt als invoer. In de volgende tabel worden de beschikbare typen verificatie beschreven, evenals situaties waarin ze worden aanbevolen voor uw toepassing.
Authentication type | Aanbevolen |
---|---|
Verificatie op basis van certificaat | U hebt een X509-certificaat dat is geconfigureerd voor een Microsoft Entra-gebruiker of service-principal. Zie Aan de slag met verificatie op basis van certificaten in Microsoft Entra ID voor meer informatie. |
Clientreferenties | U hebt een geconfigureerde service-principal die is ingesteld voor deze toepassing of een klasse toepassingen waar deze onderdeel van uitmaakt. Zie Een service-principal maken met Azure CLI voor meer informatie. |
Beheerde identiteiten voor Azure-resources | Uw toepassing wordt uitgevoerd op een Azure-resource die is geconfigureerd met een beheerde identiteit. Zie Beheerde identiteiten voor Azure-resources voor meer informatie. |
Apparaattoken | Het is de bedoeling dat uw toepassing alleen interactief wordt gebruikt. Gebruikers kunnen meervoudige verificatie hebben ingeschakeld. Gebruikers hebben toegang tot een webbrowser om zich aan te melden. Zie Apparaattokenverificatie gebruiken voor meer informatie. |
Gebruikersnaam/wachtwoord | U hebt een interactieve toepassing die geen enkele andere verificatiemethode kan gebruiken. Uw gebruikers hebben geen meervoudige verificatie ingeschakeld voor hun Microsoft Entra-aanmelding. |
Belangrijkste punten
- Als u een ander verificatietype dan clientreferenties gebruikt, moet uw toepassing zijn geregistreerd in Microsoft Entra-id. Zie Toepassingen integreren met Microsoft Entra ID voor meer informatie.
- Voorkom verificatie aan de hand van gebruikersnaam en wachtwoord, tenzij u speciale vereisten hebt. In situaties waarin aanmelding op basis van gebruikers geschikt is, kan verificatie van het apparaattoken meestal worden gebruikt.
Deze verificatietypen zijn beschikbaar via verschillende methoden.
- Met verificatie op basis van de omgeving worden referenties rechtstreeks uit de omgeving van het programma gelezen.
- Met verificatie op basis van het bestand wordt er een bestand geladen met de referenties van de service-principal.
- Met verificatie op basis van de client wordt er gebruikgemaakt van een object in de code en bent u verantwoordelijk voor de levering van de referenties wanneer het programma wordt uitgevoerd.
- Met Apparaattokenverificatie is het nodig dat gebruikers zich interactief aanmelden via een webbrowser met een token.
Alle verificatiefuncties en -typen zijn beschikbaar in het github.com/Azure/go-autorest/autorest/azure/auth-pakket .
Notitie
Voorkom clientgebaseerde verificatie, tenzij u speciale vereisten hebt. Deze verificatiemethode werkt onjuiste handelwijzen in de hand. Vooral clientgebaseerde verificatie maakt het verleidelijk om referenties vast te leggen. Het schrijven van aangepaste code voor verificatie kan ook worden onderbroken bij het gebruik van toekomstige SDK-versies als de verificatievereisten veranderen.
Verificatie op basis van de omgeving gebruiken
Als u uw toepassing uitvoert in een gecontroleerde omgeving, is verificatie op basis van omgeving een logische keuze. Met deze verificatiemethode configureert u de shell-omgeving voordat u de toepassing uitvoert. Tijdens de runtime leest de Go SDK deze omgevingsvariabelen om te verifiëren met Azure.
Verificatie op basis van de omgeving biedt ondersteuning voor alle verificatietypen behalve apparaattokens, die in de volgende volgorde worden geëvalueerd:
- Clientreferenties
- Verificatie op basis van certificaat
- Gebruikersnaam/wachtwoord
- Beheerde identiteiten voor Azure-resources
Als een verificatietype niet-ingestelde waarden heeft of wordt geweigerd, probeert de SDK automatisch het volgende verificatietype. Wanneer er geen typen meer kunnen worden geprobeerd, retourneert de SDK een fout.
In de volgende tabel worden de omgevingsvariabelen vermeld die moeten worden ingesteld voor elk verificatietype dat wordt ondersteund door de verificatie op basis van de omgeving.
Authentication type | Omgevingsvariabele | Beschrijving |
---|---|---|
Clientreferenties | AZURE_TENANT_ID |
De id voor de Active Directory-tenant waar de service-principal bij hoort. |
AZURE_CLIENT_ID |
De naam of id van de service-principal. | |
AZURE_CLIENT_SECRET |
Het geheim dat is gekoppeld aan de service-principal. | |
Certificaat | AZURE_TENANT_ID |
De id voor de Active Directory-tenant waarvoor het certificaat is geregistreerd. |
AZURE_CLIENT_ID |
De client-id van de toepassing die is gekoppeld aan het certificaat. | |
AZURE_CERTIFICATE_PATH |
Het pad naar het clientcertificaatbestand. | |
AZURE_CERTIFICATE_PASSWORD |
Het wachtwoord voor het clientcertificaat. | |
Gebruikersnaam en wachtwoord | AZURE_TENANT_ID |
De id voor de Active Directory-tenant waar de gebruiker bij hoort. |
AZURE_CLIENT_ID |
De client-id voor de toepassing. | |
AZURE_USERNAME |
De gebruikersnaam waarmee moet worden aangemeld. | |
AZURE_PASSWORD |
Het wachtwoord waarmee moet worden aangemeld. | |
Beheerde identiteit | Er zijn geen referenties nodig voor verificatie van beheerde identiteiten. De toepassing moet worden uitgevoerd op een Azure-resource die is geconfigureerd voor het gebruik van beheerde identiteiten. Zie Beheerde identiteiten voor Azure-resources voor meer informatie. |
Als u verbinding wilt maken met een andere cloud of met een ander beheereindpunt dan de standaard openbare Azure-cloud, stelt u de volgende omgevingsvariabelen in. De meestvoorkomende redenen zijn dat u Azure Stack, een cloud in een andere geografische regio of het klassieke implementatiemodel gebruikt.
Omgevingsvariabele | Beschrijving |
---|---|
AZURE_ENVIRONMENT |
De naam van de cloudomgeving waarmee verbinding wordt gemaakt. |
AZURE_AD_RESOURCE |
De resource-ID van Active Directory die u moet gebruiken bij het verbinden, als URL naar uw beheereindpunt. |
Wanneer u gebruikmaakt van verificatie op basis van de omgeving, roept u de functie NewAuthorizerFromEnvironment aan om uw verificatieobject op te halen. Dit object wordt vervolgens ingesteld op de Authorizer
-eigenschap van clients zodat deze toegang krijgen tot Azure.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := auth.NewAuthorizerFromEnvironment()
Verificatie in Azure Stack
Als u verificatie wilt uitvoeren in Azure Stack, moet u de volgende variabelen instellen:
Omgevingsvariabele | Beschrijving |
---|---|
AZURE_AD_ENDPOINT |
Het Azure Active Directory-eindpunt. |
AZURE_AD_RESOURCE |
De resource-id voor Active Directory. |
Deze variabelen kunnen worden opgehaald uit de Azure Stack-metagegevens. Als u de metagegevens wilt ophalen, opent u een webbrowser in uw Azure Stack-omgeving en volgt u deze URL: (ResourceManagerURL)/metadata/endpoints?api-version=1.0
De ResourceManagerURL
varieert op basis van de regionaam, de computernaam en de externe volledig gekwalificeerde domeinnaam (FQDN) van uw Azure Stack-implementatie:
Omgeving | ResourceManagerURL |
---|---|
Development Kit | https://management.local.azurestack.external/ |
Geïntegreerde systemen | https://management.(region).ext-(machine-name).(FQDN) |
Voor meer informatie over het gebruik van de Azure SDK voor Go in Azure Stack raadpleegt u Use API version profiles with Go in Azure Stack (API-versieprofielen met Go gebruiken in Azure Stack)
Verificatie op basis van een bestand gebruiken
Verificatie op basis van bestanden gebruikt een bestandsindeling die wordt gegenereerd door de Azure CLI. U kunt dit bestand gemakkelijk maken wanneer u een nieuwe service-principal met de parameter --sdk-auth
maakt. Als u van plan bent verificatie op basis van een bestand te gebruiken, zorgt u ervoor dat dit argument wordt opgegeven bij het maken van een service-principal. Aangezien de CLI de uitvoer afdrukt naar stdout
, moet de uitvoer worden omgeleid naar een bestand.
az ad sp create-for-rbac --role Contributor \
--scopes /subscriptions/<subscription_id> \
--sdk-auth > azure.auth
Stel de omgevingsvariabele AZURE_AUTH_LOCATION
in op waar het verificatiebestand zich bevindt. Deze omgevingsvariabele wordt gelezen door de toepassing en de aanwezige referenties worden geparseerd. Als u het verficatiebestand tijdens runtime moet selecteren, bewerkt u de omgeving van het programma met behulp van de os.SETENV-functie.
De functie NewAuthorizerFromFile moet worden aangeroepen om de verificatiegegevens te laden. In tegenstelling tot verificatie op basis van de omgeving is voor verificatie op basis van een bestand een resource-eindpunt vereist.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)
Zie Een service-principal maken met Azure CLI voor meer informatie over het gebruik van service-principals en het beheer van de toegangsmachtigingen.
Apparaattokenverificatie gebruiken
Als u wilt dat gebruikers zich interactief aanmelden, is apparaattokenverificatie de beste manier. Deze verificatiestroom geeft de gebruiker een token door om te plakken in een Microsoft-aanmeldingssite, waar ze zich vervolgens verifiëren met een Microsoft Entra-account. Deze verificatiemethode ondersteunt accounts waarvoor meervoudige verificatie is ingeschakeld, in tegenstelling tot standaardverificatie van gebruikersnaam en wachtwoord.
Als u apparaattokenverificatie wilt gebruiken, maakt u een DeviceFlowConfig-authorizer met de functie NewDeviceFlowConfig. Roep Authorizer aan op het resulterende object om het verificatieproces te starten. Bij apparaatstroomverificatie wordt het programma niet uitgevoerd totdat de gehele verificatiestroom is voltooid.
import "github.com/Azure/go-autorest/autorest/azure/auth"
deviceConfig := auth.NewDeviceFlowConfig(applicationID, tenantID)
authorizer, err := deviceConfig.Authorizer()
Een verificatieclient gebruiken
Als u een specifiek type verificatie vereist en bereid bent om het programma het werk te laten doen om de verificatiegegevens van de gebruiker te laden, kunt u een willekeurige client gebruiken die voldoet aan de auth.AuthorizerConfig-interface. Gebruik een type dat deze interface implementeert wanneer u:
- Een interactief programma schrijft
- Gespecialiseerde configuratiebestanden gebruikt
- Een vereiste hebt die het gebruik van een ingebouwde verificatiemethode voorkomt
Waarschuwing
Leg Azure-referenties nooit vast in een toepassing. Als geheimen in een binair bestand voor een toepassing worden opgeslagen, is het eenvoudiger voor een aanvaller om deze uit te pakken, ongeacht of de toepassing wordt uitgevoerd. Hiermee lopen alle Azure-resources waarvoor de referenties worden geverifieerd risico.
De volgende tabel bevat de typen in de SDK die voldoen aan de AuthorizerConfig
-interface.
Authentication type | Type authorizer |
---|---|
Verificatie op basis van certificaat | ClientCertificateConfig |
Clientreferenties | ClientCredentialsConfig |
Beheerde identiteiten voor Azure-resources | MSIConfig |
Gebruikersnaam/wachtwoord | UsernamePasswordConfig |
Maak een verificator met de bijbehorende functie New
en roep vervolgens Authorize
aan op het resulterende object om de verificatie uit te voeren. Als u bijvoorbeeld verificatie op basis van een certificaat wilt gebruiken:
import "github.com/Azure/go-autorest/autorest/azure/auth"
certificateAuthorizer := auth.NewClientCertificateConfig(certificatePath, certificatePassword, clientID, tenantID)
authorizerToken, err := certificateAuthorizer.Authorizer()