Configurez l'accès à l'API basée sur un certificat
Au lieu de l'authentification par ID utilisateur et mot de passe pour l'accès à ONTAP par l'API REST ou l'API du SDK de gestion NetApp, l'authentification basée sur certificat doit être utilisée.
Comme alternative à l'authentification basée sur certificat pour l'API REST, utilisez "Authentification par jeton OAuth 2.0".) |
Vous pouvez générer et installer un certificat auto-signé sur ONTAP comme décrit dans ces étapes.
-
À l'aide d'OpenSSL, générez un certificat en exécutant la commande suivante :
openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout test.key -out test.pem \> -subj "/C=US/ST=NC/L=RTP/O=NetApp/CN=cert_user" Generating a 2048 bit RSA private key ..............+++ ..........................+++ writing new private key to 'test.key'
Cette commande génère un certificat public nommé
test.pem
et une clé privée nomméekey.out
. Le nom commun, CN, correspond à l'ID utilisateur ONTAP. -
Installez le contenu du certificat public au format courrier amélioré confidentiel (pem) dans ONTAP en exécutant la commande suivante et en collant le contenu du certificat lorsque vous y êtes invité :
security certificate install -type client-ca -vserver cluster1 Please enter Certificate: Press <Enter> when done
-
Activez ONTAP pour autoriser l'accès client via SSL et définissez l'ID utilisateur pour l'accès API.
security ssl modify -vserver cluster1 -client-enabled true security login create -user-or-group-name cert_user -application ontapi -authmethod cert -role admin -vserver cluster1
Dans l'exemple suivant, l'ID utilisateur
cert_user
est désormais activé pour utiliser l'accès à l'API authentifié par certificat. Un script Python du SDK de gestion simple utilisantcert_user
pour afficher la version ONTAP apparaît comme suit :#!/usr/bin/python import sys sys.path.append("/home/admin/netapp-manageability-sdk-9.5/netapp-manageability-sdk-9.5/lib/python/NetApp") from NaServer import * cluster = "cluster1" transport = "HTTPS" port = 443 style = "CERTIFICATE" cert = "test.pem" key = "test.key" s = NaServer(cluster, 1, 30) s.set_transport_type(transport) s.set_port(port) s.set_style(style) s.set_server_cert_verification(0) s.set_client_cert_and_key(cert, key) api = NaElement("system-get-version") output = s.invoke_elem(api) if (output.results_status() == "failed"): r = output.results_reason() print("Failed: " + str(r)) sys.exit(2) ontap_version = output.child_get_string("version") print ("V: " + ontap_version)
La sortie du script affiche la version ONTAP.
./version.py V: NetApp Release 9.5RC1: Sat Nov 10 05:13:42 UTC 2018
-
Pour effectuer une authentification basée sur un certificat avec l'API REST ONTAP, procédez comme suit :
-
Dans ONTAP, définissez l'ID utilisateur pour l'accès http :
security login create -user-or-group-name cert_user -application http -authmethod cert -role admin -vserver cluster1
-
Sur votre client Linux, exécutez la commande suivante qui produit la version ONTAP en tant que sortie :
curl -k --cert-type PEM --cert ./test.pem --key-type PEM --key ./test.key -X GET "https://cluster1/api/cluster?fields=version" { "version": { "full": "NetApp Release 9.7P1: Thu Feb 27 01:25:24 UTC 2020", "generation": 9, "major": 7, "minor": 0 }, "_links": { "self": { "href": "/api/cluster" } } }
-