PowerFlex: Einrichten von PowerFlex Single Sign-On mit Microsoft Azure unter Verwendung von OpenID Connect (OIDC)
Zusammenfassung: Dieser Artikel führt Sie durch die Konfiguration von PowerFlex Customer Identity and Access Management (CIAM) für SSO mit Microsoft Azure Entra ID mithilfe von OIDC.
Weisungen
Dieser Artikel führt Sie durch die Konfiguration von PowerFlex Customer Identity and Access Management (CIAM) für SSO mit Microsoft Azure Entra ID mithilfe von OIDC, einschließlich Zertifikateinrichtung, IdP- und SP-Konfiguration (Service Provider), Tokenaustausch und API-Zugriffsvalidierung. Diese Konfiguration ermöglicht es Ihnen, SSO-Funktionen zu nutzen. Dies erfordert Konfigurationsänderungen sowohl auf PowerFlex als auch auf Microsoft Azure.
Dieser Artikel richtet sich an Administratoren und Sicherheitsmitarbeiter, die PowerFlex verwenden.
PowerFlex CIAM lässt sich in OIDC-konforme IdPs integrieren, einschließlich Microsoft Azure Entra ID, um eine zentralisierte Authentifizierung und einen sicheren API-Zugriff zu ermöglichen.
Dieser Artikel enthält eine Schritt-für-Schritt-Anleitung zum Einrichten von PowerFlex Single Sign-On bei Microsoft Azure über die REST API. Hier ist die Liste der allgemeinen Schritte:
- Initialisieren von CIAM und Konfigurieren von PowerFlex als OIDC-Serviceanbieter (SP)
- Registrieren der Microsoft Azure Entra ID als OIDC-Identitätsanbieter (IdP)
- Hinzufügen der erforderlichen CA-Zertifikate (DigiCert/GlobalSign) zu CIAM
- Konfigurieren von Microsoft Azure-Anwendungsansprüchen, Umleitungs-URIs und Berechtigungen
- Erstellen von CIAM OAuth2-Clients und Tokenaustauschzuordnungen
- Rufen Sie ein Microsoft Azure-Token ab, tauschen Sie es gegen ein PowerFlex-Token aus und validieren Sie den REST API-Zugriff
Terminologie
In der folgenden Tabelle sind wichtige Begriffe und Konzepte beschrieben, die für diesen Prozess erforderlich sind:
| Begriff | Beschreibung |
| IP-Adresse der Management-VMM (Virtual Machine) | Die MVM-IP-Adressen, die PowerFlex Manager und die Managementservices hosten. Ein MVM-SDS-Node (Storage Data Server) Sie können die MVM-IP-Adressen ermitteln, indem Sie sich bei der PowerFlex Manager-Benutzeroberfläche anmelden. Navigieren Sie zu System-Komponenten>> MVM. Beispiel: 10.2xx.3xx.184, 10.2xx.3xx.185, 10.2xx.3xx.186 |
| SDS (Storage Data Server) | Der Storage Data Server(SDS)-Node, der die MVMs hostet. |
| IP-Adresse für eingehenden Datenverkehr | Die externe IP-Adresse für den rke2-ingress-nginx-controller (Lastenausgleichs-/Eingangsendpunkt) |
| Customer Identity and Access Management (CIAM) | Die PowerFlex Customer Identity and Access Management-Services für OAuth2/OIDC |
| Serviceanbieter (Service Provider, SP) | Identitätsanbieter (IdP)|Serviceanbieter (PowerFlex-/Keycloak-Seite) und Identitätsanbieter (Microsoft Azure Entra ID) |
Voraussetzungen
Es gibt ein Automatisierungsskript (oidc_azure.tar), das für die Verbindung von Microsoft Azure Entra ID mit PowerFlex verwendet wird.
Das Skript liegt in einer tar-Datei vor und muss heruntergeladen und in Ihren MVM kopiert werden:
So kopieren Sie die oidc_azure. tar-Datei verwenden, müssen Sie über Administratorzugriff auf die virtuelle PowerFlex-Managementmaschine verfügen.
Hier ist die Datei: oidc_azure.tar
Sie müssen die Befehle im folgenden Screenshot ausführen, da die exportierten Variablen in den Schritten und Skripten in diesem Prozess wiederverwendet werden.
sudo -i

Was bewirken die einzelnen Befehle?
- Die '
kubectl get svc -A | grep "sso " | awk '{print $4}''-Befehl gibt die Cluster-IP-Adresse des SSO-Service im Kubernetes-Cluster zurück. - Die '
curl -k --location --request POST "https://${SSO_IP}:8080/rest/auth/login" --header 'Accept: application/json' --header 'Content-Type: application/json' --data '{"username": "admin","password": "Scaleio123!" }' | jq -r .access_token' meldet sich mit der SSO REST API bei PowerFlex an und ruft ein Zugriffstoken (JWT) ab, das für nachfolgende API-Aufrufe an PowerFlex-Services verwendet wird. - Die'
kubectl get svc -A | grep -m1 rke2-ingress-nginx-controller | sort | awk '{print $5}Der Befehl gibt die externe IP-Adresse des rke2-ingress-nginx-controller-Service zurück, bei dem es sich in der Regel um die IP des Lastenausgleichsmoduls oder des Eingangscontrollers handelt, die für externen Datenverkehr verwendet wird.
Wenn diese Befehle ausgeführt werden, werden die folgenden Variablen exportiert:
export SSO_IP=$(kubectl get svc -A | grep "sso " | awk '{print $4}')
export ASMUI_PASS=$(kubectl get secret pfxm-asmui-creds -o json -n powerflex \ | jq '.data | map_values(@base64d)' \ | jq -r '.["keycloak-password"]')
export PM_TOKEN=$(curl -k --location --request POST "https://${SSO_IP}:8080/rest/auth/login" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data "{\"username\": \"asmuiuser\",\"password\": \"$ASMUI_PASS\"}" | jq -r .access_token)
export IN_IP=$(kubectl get svc -A | grep -m1 rke2-ingress-nginx-controller | sort | awk '{print $5}')
1. Initialisieren von CIAM und Konfigurieren von PowerFlex als OIDC-Serviceanbieter (SP)
Dieser Schritt ist der Startpunkt bei der Integration von CIAM in PowerFlex unter Verwendung von OpenID Connect (OICD). Die SSO-CIAM-Konfiguration für PowerFlex wird initialisiert.
API: POST /rest/v1/sso-ciam/init
Befehl:
curl -k -X POST https://$IN_IP/rest/v1/sso-ciam/init --header 'Accept: application/json' --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}"
Skript: ./init.sh
Ausgabe: Eine ganze Zahl, die CIAM-Mandanten-ID, d. h. "2"
2. Konfigurieren Sie PowerFlex mit Keycloak als OIDC-Serviceanbieter.
In diesem Schritt wird PowerFlex als OIDC-Serviceanbieter mit Keycloak (oder einem anderen IdP) registriert und konfiguriert, wodurch eine sichere SSO-Authentifizierung mit OpenID Connect ermöglicht wird.
API-Vorgang: BEREITSTELLEN /rest/v1/oidc-sp-config
Befehl:
curl -kL -X POST --url https://$IN_IP/rest/v1/oidc-sp-config --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}" --data '{
"sp_id": "powerflex-$IN_IP",
"redirect_uri": "https://$IN_IP/auth/realms/powerflex/protocol/openid-connect/auth",
"logout_uri": "https://$IN_IP/auth/realms/powerflex/protocol/openid-connect/logout",
"required_claims": ["email"],
"keycloak_settings": {
"config": {
"clientAuthMethod": "client_secret_basic",
"pkceEnabled": "true",
"useJwksUrl": "true",
"validateSignature": "true"
},
"first_broker_login_flow_alias": "first broker login",
"post_broker_login_flow_alias": null,
"link_only": null,
"store_token": true,
"add_read_token_role_on_create": true,
"trust_email": true
},
"days_to_store_state_code_verifier": 1}'
Skript: ./add_oidc_sp.sh
Ausgabe (gekürzt): Neuer Serviceanbieter
{"id":"00000000-0000-0000-0000-000000000000","sp_id":"powerflex-10.247.39.179","redirect_uris":["https://10.247.39.179/auth/realms/powerflex/protocol/openid-connect/auth"],"logout_uri":"https://10.247.39.179/auth/realms/powerflex/protocol/openid-connect/logout" ... },
2.1 Listen Sie den OIDC-Dienstanbieter auf.
In diesem Schritt wird die aktuelle OIDC-Serviceanbieterkonfiguration von PowerFlex abgerufen.
Befehl:
curl -kL https://$IN_IP/rest/v1/oidc-sp-config --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}" | jq -r '.results[]'
Skript: ./list_oidc_sp.sh
Beispielausgabe (gekürzt): Ein Serviceanbieter, der im vorherigen Schritt erstellt wurde.
{"results":[{"id":"00000000-0000-0000-0000-000000000000","sp_id":"powerflex-10.247.39.179",...}]
3. Fügen Sie die Zertifizierungsstelle zu PowerFlex for CIAM-Services hinzu.
In diesem Schritt muss PowerFlex mitgeteilt werden, welcher Zertifizierungsstelle es bei der Validierung der sicheren Kommunikation mit dem CIAM-System vertrauen soll. Es gibt zwei Zertifikate für CIAM-Services:
- DigiCert ist eine vertrauenswürdige Zertifizierungsstelle (CA). Microsoft Azure-Dienste (wie Microsoft Azure AD, OIDC-Endpunkte und Microsoft-APIs) verwenden SSL/TLS-Zertifikate, die von DigiCert ausgestellt werden, um die Kommunikation zu sichern.
- GA2-Zertifikate (GlobalSign oder ähnliche Stamm-/Zwischenzertifikate) sind Teil der Zertifikatkette, die die Identitätsendpunkte von Microsoft Azure validiert. Sie stellen Folgendes sicher:
- Die OIDC-Metadaten-URL (https://login.microsoftonline.com/...)(Externer Link) und Tokenendpunkte sind vertrauenswürdig.
- Sichere HTTPS-Kommunikation zwischen PowerFlex und Microsoft Azure IdP.
Dieser Vorgang stellt sicher, dass CIAM Microsoft Azure-Endpunkten vertraut.
Der folgende Befehl verwendet Dateien mit PEM-kodierten Zertifikaten, wobei neue Zeilen durch "\n" ersetzt werden. Grundsätzlich gibt es in einer solchen Datei nur eine Zeile.
Zum Beispiel:
-----BEGIN CERTIFICATE-----
\nMIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\nQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\nb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\nCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\nnh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\nT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\ngdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\nBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\nTLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\nDQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\nhMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\nPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\nYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\nCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n-
----END CERTIFICATE-----
API: POST/API/V1/CIAM/<ciam_id>/x509-Zertifikate
Befehl:
CA=`cat $1`
curl -kvvL -X POST https://$IN_IP//Api/V1/CIAM/<return_value_from_init_ciam>/x509-certificates --header "Authorization: Bearer ${PM_TOKEN}" --data-raw "
{
\"type\": \"CA\",
\"service\": \"ALL\",
\"certificate_format\": \"PEM\",
\"certificate\": \"$CA\"
}"
Skript: ./add_cert.sh <certificate_pem_file>
Beispielausgabe (gekürzt):
cat digicert_ca.pem
-----BEGIN CERTIFICATE-----\nMIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\nMQs;wCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\nQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\nb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\nCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\nnh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\nT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\ngdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\nBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\nTLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\nDQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\nhMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\nPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\nYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4p
...
Fsiv9kuXclVzDAGySj4dzp30d8tbQk\nCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n-----END CERTIFICATE-----\n
delladmin@lglou184:~/oidc_testing> cat digicert_g2.pem
-----BEGIN CERTIFICATE-----\nMIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\nMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\nb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG\n9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI\n2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx\n1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ\nq2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz\ntCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ\nvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP\nBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV\n5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY\n1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4\nNeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG\nFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91\n8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe\npLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl\nMrY=\n-----END CERTIFICATE-----\n
--------------------------------------------------------------------------------------------------------------------------
./add_cert.sh digicert_ca.pem
{"id":"b5c3d51a-9161-4515-a741-4a197a348cf9","certificate":"-----BEGIN CERTIFICATE-----...\nMIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\nQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\nb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\nCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\nnh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\nT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\ngdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\nBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\nTLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\nDQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\nhMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\nPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\nYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\nCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n-----END CERTIFICATE-----\n","subject":"C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA","common_name":"DigiCert Global Root CA","issuer":"C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA","organization":"DigiCert Inc","organizational_unit":"www.digicert.com","country":"US","valid_from_timestamp":"2006-11-10T00:00:00Z","valid_to_timestamp":"2031-11-10T00:00:00Z","key_usage":"Digital Signature, Cert Sign, CRL Sign","type":"CA","service":"ALL","is_self_signed":true,"is_current":true,"is_valid":true,"cert_fingerprint":"43:48:A0:E9:44:4C:78:CB:26:5E:05:8D:5E:89:44:B4:D8:4F:96:62:BD:26:DB:25:7F:89:34:A4:43:C7:* Connection #0 to host 10.247.39.179 left intact
01:61","version":3,"serial_number":10944719598952040374951832963794454346,"signature_algorithm":"RSA","signature_hash_algorithm":"SHA-1","public_key":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKP\nC3eQyaKl7hLOllsBCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtx\nRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmF\naG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvU\nX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrT\nC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOv\nJwIDAQAB\n-----END PUBLIC KEY-----\n"}
3.1 Überprüfen Sie, ob die Zertifikate hinzugefügt und aufgelistet wurden.
In diesem Schritt wird überprüft, ob die Zertifikate hinzugefügt und aufgelistet wurden.
Befehl:
curl -kL https://$IN_IP/Api/V1/CIAM/2/x509-certificates --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}"
Hinweis: https://$IN_IP//Api/V1/CIAM/2/x509-certificate – hier ist die Zahl 2 aus dem init.sh in Schritt 1.
Skript: ./list_certs.sh
Beispielausgabe (gekürzt):
{"results":[{"id":"4a4d7f6b-251c-41a6-b304-783ed6d5fbc2","certificate":"-----BEGIN ....-----END PUBLIC KEY-----\n"}]}
4. Registrieren der Microsoft Azure Entra ID als OIDC-Dienst (IdP)
In diesem Schritt wird Microsoft Azure Entra ID unter Verwendung von OpenID Connect (OIDC) als externer Identitätsanbieter für PowerFlex registriert, sodass sich Nutzer über Microsoft Azure authentifizieren können, anstatt sich auf lokale PowerFlex-Anmeldedaten zu verlassen.
Variablen:
- Mandanten-ID: Die Mandanten-ID identifiziert den Microsoft Azure Active Directory-Mandanten, zu dem der Identitätsanbieter gehört. Sie finden es auf der Seite Übersicht des Startbildschirms der Anwendung in Microsoft Azure.
- KK_ID: Die KK-ID identifiziert die Client-ID der Microsoft Azure-Anwendung.
- KK_SECRET: Der KK-Schlüssel identifiziert den geheimen Clientschlüssel von Microsoft Azure.
API: POST /rest/v1/oidc-services
curl -kvvL --request POST \
--url "https://$IN_IP/rest/v1/oidc-services" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${PM_TOKEN}" \
--data "{
\"name\": \"azure\",
\"is_enabled\": true,
\"idp_metadata_url\": \"https://login.microsoftonline.com/<Tenant_id>/v2.0/.well-known/openid-configuration\",
\"claims_mapper\": [
{ \"name\": \"email\", \"value\": \"email\" },
{ \"name\": \"given_name\", \"value\": \"firstName\" },
{ \"name\": \"preferred_username\", \"value\": \"username\" },
{ \"name\": \"family_name\", \"value\": \"lastName\" }
],
\"client_id\": \"$KK_ID\",
\"client_secret\": \"$KK_SECRET\",
\"scopes\": [\"openid\",\"profile\",\"email\",\"offline_access\"],
\"pkce_enabled\": true,
\"code_challenge_method\": \"S256\",
\"idp \"idp_type\": \"AzureEntraID\"KK_ID=b151947c-b514-4997-a369-a9b76f26b050
KK_SECRET=tk_8Q~QYTj1FQYN2chWovu.M5Ph3YnIVzLwRJcoZ
TENANT_ID=945c199a-83a2-4e80-9f8c-5a91be5752dd
curl -kL -X POST --url https://$IN_IP/rest/v1/oidc-services --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}" \
--data \
"{ \"name\": \"azure\", \"is_enabled\": true, \"idp_metadata_url\": \"https://login.microsoftonline.com/${TENANT_ID}/v2.0/.well-known/openid-configuration\",
\"claims_mapper\": [ { \"name\": \"email\", \"value\": \"email\"
},
{
\"name\": \"given_name\",
\"value\": \"firstName\"
},
{
\"name\": \"preferred_username\",
\"value\": \"username\"
},
{
\"name\": \"family_name\",
\"value\": \"lastName\"
}
],
\"client_id\": \"$KK_ID\",
\"client_secret\": \"$KK_SECRET\",
\"scopes\": [
\"openid\",
\"profile\",
\"email\",
\"offline_access\"
],
\"pkce_enabled\": true,
\"code_challenge_method\": \"S256\",
\"idp_type\": \"AzureEntraID\"
}"
Skript: ./add_oidc_service.sh
Beispielausgabe (gekürzt):
{
"id": "a230b7b8-8f6c-47db-9327-2e48db8040a9",
"name": "azure",
"is_enabled": true,
"idp_metadata_url": "https://login.microsoftonline.com/945c199a-83a2-4e80-9f8c-5a91be5752dd/v2.0/.well-known/openid-configuration",
"idp_metadata_load_timestamp": "2025-11-14T16:00:40.356569216Z",
"idp_metadata": {
"issuer": "https://login.microsoftonline.com/945c199a-83a2-4e80-9f8c-5a91be5752dd/v2.0",
"...": "additional metadata fields"
},
"code_challenge_method": "S256",
"idp_type": "AzureEntraID",
"is_default": false
}
4.1 Listen Sie den OIDC-Service auf.
In diesem Schritt wird der OIDC-Service aufgeführt.
Befehl:
curl -kL https://$IN_IP/rest/v1/oidc-services --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}"
Skript: list_oidc_service.sh
Beispiel (gekürzt):
./list_oidc_service.sh
{"results":[{"id":"a230b7b8-8f6c-47db-9327-2e48db8040a9","name":"azure","is_enabled":true,"idp_metadata_url":"https://login.microsoftonline.com/945c199a-83a2-4e80-9f8c-5a91be5752dd/v2.0/.well-known/openid-configuration",..."idp_type":"AzureEntraID","is_default":false}]}
5. Konfigurieren Sie die Umleitungs-URL in Microsoft Azure.
In diesem Schritt müssen Sie Microsoft Azure so einrichten, dass Benutzer nach der erfolgreichen Anmeldung an ein Ziel namens Umleitungs-URL weitergeleitet werden.
Wechseln Sie im Microsoft Azure-Portal zu App-Registrierung → Authentifizierung → Umleitungs-URIs, und fügen Sie die folgende URL hinzu:
https://< PFMP_IP>/auth/realms/powerflex/broker/<SERVICE_ID_AZURE>/endpoint
Beispiel: https://10.247.39.179/auth/realms/powerflex/broker/a230b7b8-8f6c-47db-9327-2e48db8040a9/endpoint
- <> PFMP_IP ist die PowerFlex Manager-IP (falls erforderlich, Hostnamen auflösen)
- <> SERVICE_ID_AZURE ist der IdP aus der Service-ID aus Schritt 4.
6. Konfigurieren Sie die Tokenansprüche in Microsoft Azure.
a) Hinzufügen optionaler Ansprüche (ID-Token)
- Navigieren Sie im Microsoft Azure-Portal zu Tokenkonfiguration → Optionalen Anspruch hinzufügen.
- Wählen Sie unter Tokentyp die Option ID aus.
- Aktivieren Sie unter Anspruch das Kontrollkästchen neben den folgenden Attributen:
-
E-Mail
-
family_name
-
given_name
-
preferred_username
-
- Klicken Sie auf Add.
b) Hinzufügen von Gruppenansprüchen
- Navigieren Sie im Microsoft Azure-Portal zu Tokenkonfiguration → Gruppenansprüche hinzufügen.
- Aktivieren Sie unter Gruppenanspruch bearbeiten das Kontrollkästchen neben der Anwendung zugewiesenen Gruppen.
- Aktivieren Sie unter ID das Kontrollkästchen neben Gruppen-ID.
- Aktivieren Sie unter Zugriff das Kontrollkästchen neben Gruppen-ID.
- Klicken Sie auf Add.
Sie verwenden diese Gruppen-IDs später für die PowerFlex-Rollenzuordnung in der PowerFlex Manager-Benutzeroberfläche.
7. Konfigurieren Sie API-Berechtigungen in Microsoft Azure.
Mit diesem Schritt wird sichergestellt, dass PowerFlex über den richtigen Zugriff auf geschützte Ressourcen in Microsoft Azure verfügt.
- Navigieren Sie im Microsoft Azure-Portal zu API-Berechtigungen →Microsoft Graph.
- Wählen Sie unter API-Berechtigungen anfordern
- Wählen Sie unter API-Berechtigungen anfordern die Option Benutzer → Lesen aus.
- Klicken Sie auf Berechtigungen aktualisieren.
8. (Optional) Zuweisen von Nutzern/Gruppen in Microsoft Azure
Dieser Schritt gewährt den entsprechenden Personen oder Teams Zugriff auf PowerFlex, indem ihnen bestimmte Rollen oder Gruppen in Microsoft Azure Active Directory zugewiesen werden.
- Navigieren Sie im Microsoft Azure-Portal zu Unternehmensanwendungen → Nutzer und Gruppen.
- Aktivieren Sie unter Anzeigename das Kontrollkästchen neben dem Nutzer/der Gruppe und kopieren Sie die Objekt-ID.
Die Objekt-ID wird für die anspruchsbasierte Rollenzuordnung in PowerFlex verwendet.
9. (Optional) Hinzufügen des Nutzers/der Gruppe in der PowerFlex-Benutzeroberfläche
Dieser Schritt umfasst die Gewährung des Zugriffs in PowerFlex, indem der entsprechende Nutzer oder die entsprechende Gruppe direkt im PowerFlex Manager-Nutzer hinzugefügt wird. Dadurch wird sichergestellt, dass er sich anmelden und das System gemäß den zugewiesenen Rollen und Berechtigungen verwenden kann.
- Melden Sie sich bei der PowerFlex Manager -Benutzeroberfläche an.
- Navigieren Sie zu Einstellungen → Nutzerverwaltung → Remotenutzer/-gruppe hinzufügen.
- Geben Sie die folgenden Informationen ein:
- Typ: Gruppe
- Anbieter: Azure
- Gruppenname: beliebiger aussagekräftiger Name
- Anspruchsname: Gruppen
- Nutzerrolle: Super User
- Anspruchswert: Objekt-ID von Microsoft Azure (Schritt 8)
10. Fügen Sie den Client zu CIAM hinzu.
In diesem Schritt wird der Client zu CIAM hinzugefügt, um PowerFlex zu registrieren, damit CIAM bestimmen kann, welche Anwendung Authentifizierung anfordert, wohin Token gesendet werden sollen, welche Berechtigungen die Anwendung benötigt und welche Authentifizierungsabläufe sie verwenden kann.
API: POST /rest/v1/oauth2-clients
Befehl:
curl -kL --request POST \
--url "https://$IN_IP/rest/v1/oauth2-clients" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${PM_TOKEN}" \
--data "{
\"client_name\": \"azure_oidc_client\",
\"redirect_uris\": [\"\"],
\"authorization_code_flow\": false,
\"client_credentials_flow\": false,
\"token_exchange_enabled\": true,
\"offline_access_enabled\": true,
\"client_offline_session_idle\": 1,
\"client_offline_session_max\": 1,
\"client_security_level\": \"TRUSTED\"
Skript: ./addclient_ciam.sh
Beispiel Ausgabe:
./addclient_ciam.sh
{"id":"77ce10cb-c40e-4c1e-b922-07014b5b6e7b","client_name":"azure_oidc_client","client_secret":"QXDtyVYO5l3Puj2ZMACz/MK+sTSOqDHy53oRhVkXiBc=","redirect_uris":[""],"authorization_code_flow":false,"client_credentials_flow":false,"signing_algorithm":"RS256","refresh_token_max_reuse":3,"access_token_expiration_duration":360,"token_exchange_enabled":true,"client_security_level":"TRUSTED","offline_access_enabled":true,"client_offline_session_idle":1,"client_offline_session_max":1
10.1 Überprüfen Sie, ob der Client hinzugefügt wurde, indem Sie ihn auflisten.
In diesem Schritt wird überprüft, ob der Client erfolgreich hinzugefügt wurde, indem alle vorhandenen Clients aufgelistet werden.
Befehl:
curl -kL https://$IN_IP/rest/v1/oauth2-clients --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}" | jq -r '.results[]'
Skript: ./list_clients_ciam.sh
Beispiel:
./list_clients_ciam.sh
{
"id": "77ce10cb-c40e-4c1e-b922-07014b5b6e7b",
"client_name": "azure_oidc_client",
"redirect_uris": [
""
],
"authorization_code_flow": false,
"client_credentials_flow": false,
"signing_algorithm": "RS256",
"refresh_token_max_reuse": 3,
"access_token_expiration_duration": 360,
"token_exchange_enabled": true,
"client_security_level": "TRUSTED",
"offline_access_enabled": true,
"client_offline_session_idle": 1,
"client_offline_session_max": 1,
"num_failed_login_attempts": 0
}
10.2 Ändern Sie den Client.
Mit diesem Schritt wird ein vorhandener Anmeldeclient in CIAM aktualisiert. Die Payload sollte leer bleiben ({}). Mit diesem Befehl werden dem Keycloak-Client erforderliche PowerFlex-Zuordnungen hinzugefügt.
Befehl:
curl -k -X PATCH "https://$IN_IP/rest/v1/login-clients/$1" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${PM_TOKEN}" \
--data '{}'
Skript: ./update_client.sh <ID_FROM_ADD_CLIENT_CIAM>
Beispiel:
./update_client.sh 77ce10cb-c40e-4c1e-b922-07014b5b6e7b
{"id":"1c3dbd45-66bc-44c7-94ce-1aef3a282afc","name":"azure_oidc_client","client_id":"77ce10cb-c40e-4c1e-b922-07014b5b6e7b","is_enabled":true,"client_secret":null,"redirect_uris":[""],"web_origins":[""]}
11. Hinzufügen der Anwendung zu CIAM für die Zuordnung des Tokenaustauschs
In diesem Schritt wird die Anwendung zu CIAM hinzugefügt, um externe Authentifizierung, Autorisierung und sichere Identitätsflüsse zu ermöglichen.
API: POST /rest/v1/oauth2-token-exchanges
Erforderliche Variablen:
- LOCAL_CLIENT_ID: ID aus addclient_ciam.sh (z. B. 77ce10cb-c40e-4c1e-b922-07014b5b6e7b)
- EXT_CLIENT_ID: Microsoft Entra ID Anwendungs-ID (Client) (z. B. 859c0721-cb0c-433c-a437-bd2d2462754f)
- METADATEN: Metadaten-URL der Microsoft Azure-Anwendung (z. B. https://login.microsoftonline.com/< Tenant_id>/v2.0/.well-known/openid-configuration)
- IDP: OIDC-Service-ID (z. B. a230b7b8-8f6c-47db-9327-2e48db8040a9)
- ROLLE: PowerFlex-Rolle (z. B. SuperUser)
- PM_TOKEN: API-Bearertoken
- IN_IP: Zielhost/IP-Adresse
Befehl:
curl -kL -X POST "https://$IN_IP/rest/v1/oauth2-token-exchanges" \
-H "Content-Type: application/json" \
-H "clientId: $LOCAL_CLIENT_ID" \
-H "Authorization: Bearer ${PM_TOKEN}" \
--data @- <<EOF
{
"ciam_oauth2_client_id": "$LOCAL_CLIENT_ID",
"customer_client_id": "$EXT_CLIENT_ID",
"customer_metadata_url": "$METADATA",
"idp_service_id": "$IDP",
"static_roles": ["$ROLE"]
}
Skript: ./add_app.sh
11.1 Auflisten der Anwendungs-ID
In diesem Schritt wird die Anwendungs-ID abgerufen, um die eindeutige Client-ID zu validieren, die für nachgelagerte Autorisierungs- und Tokenaustauschvorgänge erforderlich ist.
Befehl:
curl -kL "https://$IN_IP/rest/v1/oidc-services" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${PM_TOKEN}"
Skript:
./list_apps.sh
Beispiel:
./list_apps.sh
{ "id": "f803da04-2979-49dc-9408-496f127639b4",
"ciam_oauth2_client_id": "77ce10cb-c40e-4c1e-b922-07014b5b6e7b",
"customer_client_id": "859c0721-cb0c-433c-a437-bd2d2462754f",
"customer_metadata_url": "https://login.microsoftonline.com/945c199a-83a2-4e80-9f8c-5a91be5752dd/v2.0/.well-known/openid-configuration",
"idp_service_id": "a230b7b8-8f6c-47db-9327-2e48db8040a9",
"static_roles": [
"SuperUser" ]
}
12. Zuordnen von Rollen in Keycloak (PowerFlex-Bereich)
In diesem Schritt werden Rollen im PowerFlex Keycloak-Bereich zugeordnet, um die Rollenzuweisungen des Identitätsanbieters an den PowerFlex-Autorisierungsanforderungen auszurichten.
1. Melden Sie sich mit dem folgenden Endpunkt bei Keycloak an: https://< PFMP_IP>/auth/admin/
Beispiel: https://10.247.39.179/auth/admin/
Um sich bei Keycloak anzumelden, können die Zugangsdaten wie folgt abgerufen werden:
Befehl:
kubectl get secret keycloak-admin-credentials -o json -n powerflex | jq '.data | map_values(@base64d)'
Skript: ./get_keycloak_creds.sh
Beispiel:
./get_keycloak_creds.sh
{
"password": "sZFmHmfhjj",
"username": "keycloak"
}
2. Wählen Sie in der Keycloak-Instanz PowerFlex aus.
3. Klicken Sie auf Nutzer, wählen Sie die Nutzer-ID aus und aktualisieren Sie die Attribute so, dass sie mit der in CIAM verwendeten Rolle übereinstimmen (z. B. SuperUser).
4. Überprüfen Sie unter Role mapping, ob die Rolle aktualisiert wurde.
13. Abrufen des Microsoft Azure-Tokens (Kennwort des Ressourceninhabers, Zugangsdaten/Nutzername + Kennwort)
Es gibt mehrere Möglichkeiten, ein Token von Microsoft Azure AD abzurufen. In diesem Schrittbeispiel meldet sich die Anwendung bei der Microsoft Entra ID (Azure AD) an, indem sie den Benutzernamen + das Kennwort eines Benutzers direkt an den Tokenendpunkt sendet, um ein OAuth 2.0-Token zu erhalten. Dies ist die ROPC-Berechtigung (Resource Owner Password Credentials).
Befehl:
curl -X POST https://login.microsoftonline.com/$TENANT_ID/oauth2/token -H 'Content-Type: application/x-www-form-urlencoded' -d "grant_type=password&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&username=$USERNAME&password=$encoded_password&resource=$RESOURCE")
Skript:./get_azure_token.sh
Tipp: Um sicherzustellen, dass das Token gültig ist, navigieren Sie zum JSON Web Token (JWT) Debugger (externer Link)
14. Tauschen Sie den Microsoft Azure-Token gegen den PowerFlex-Token (CIAM) aus.
In diesem Schritt wird der Microsoft Azure-Token gegen ein PowerFlex-CIAM-Token ausgetauscht, sodass die PowerFlex-APIs aufgerufen werden können.
API: POST/rest/v1/token
Variablen:
- CIAM_CLIENT_ID – Client-ID aus Schritt "Client zu CIAM hinzufügen" (Schritt 10)
- CIAM_CLIENT_SECRET – Geheimer Clientschlüssel aus Schritt "Client zu CIAM hinzufügen" (Schritt 10)
- EXT_TOKEN – Token von Microsoft Azure
Befehl:
curl -kL -X POST https://$IN_IP/rest/v1/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header "ClientId: $CIAM_CLIENT_ID" \
--header "ClientSecret: $CIAM_CLIENT_SECRET" \
--data "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
--data "subject_token=${EXT_TOKEN}" \
--data "subject_token_type=urn:ietf:params:oauth:token-type:jwt"
Scripts: ./token.sh (verwendet die EXT_TOKEN setzt daher die Umgebungsvariable entsprechend)
Beispielausgabe (gekürzt):
{
"access_token": "ey...A",
"issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
"token_type": "Bearer",
"expires_in": 1800,
"refresh_token": "ey...qA"
}
15. Überprüfen des Zugriffs auf die PowerFlex REST API
In diesem Schritt wird bestätigt, dass das Token funktioniert, indem ein PowerFlex-REST-Endpunkt aufgerufen wird. Es verwendet die access_token aus der Ausgabe des "token.sh", exportiert als env-Variable PM_TOKEN.
export PM_TOKEN=eyJhb...eN_A
Befehl:
curl -k --location --request GET https://$IN_IP/Api/V1/Credential --header 'Content-Type: application/json' --header "Authorization: Bearer $PM_TOKEN"
{
"totalRecords" : 3,
"credentialList" : [ {
"link" : {
"title" : "root",
"href" : "getCredential/69087b0c-cce7-4be7-b154-e8a3019cc553",
"rel" : "self",
"type" : null
},
"credential" : {
"type" : "OSCredential",
"id" : "69087b0c-cce7-4be7-b154-e8a3019cc553",
....
"link" : null,. "link" : null,. "link" : null, "references" : {
"devices" : 0,
"policies" : 0
}
} ]
}
Referenzinformationen
Zusammenfassung der API-Sequenz
- Initialisieren von CIAM für PowerFlex
(/rest/v1/sso-ciam/init) - Konfigurieren von PowerFlex als OIDC-Serviceanbieter
(/rest/v1/oidc-sp-config) - Hinzufügen von Zertifikaten für CIAM-Services
(DigiCert, GlobalSign usw.) - Registrieren der Microsoft Azure Entra ID als OIDC-Service
(/rest/v1/oidc-services) - Konfigurieren der Service-ID auf der Registerkarte "Microsoft Azure Authentication"
(Brokerendpunktzuordnung) - Festlegen von Token- und Gruppenansprüchen in Microsoft Azure
(Optionale Ansprüche, API-Berechtigungen) - Hinzufügen eines OAuth2-Clients in CIAM
(/rest/v1/oauth2-clients) - Hinzufügen einer Anwendung zu CIAM für den Tokenaustausch
(/rest/v1/oauth2-token-exchanges) - Abrufen eines Microsoft Azure-Tokens, das gegen ein PowerFlex-Token
eingetauscht werden soll(/rest/v1/token) - Überprüfen des Zugriffs auf PowerFlex REST APIs
Befehle zum Durchführen eines Tokenaustauschs
Aufrufen von PowerFlex-APIs mit Microsoft Azure Entra-Token
Befehl zum Durchführen eines Tokenaustauschs:
curl -kL -X POST https://$PFMP_IP/rest/v1/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header "ClientId: $CIAM_CLIENT_ID" \
--header "ClientSecret: $CIAM_CLIENT_SECRET" \
--data "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
--data "subject_token=${AZURE_TOKEN}" \
--data "subject_token_type=urn:ietf:params:oauth:token-type:jwt" | jq '.'
Beispiel:
curl -kL -X POST https://10.247.39.179/rest/v1/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header "ClientId: 77ce10cb-c40e-4c1e-b922-07014b5b6e7b" \
--header "ClientSecret: QXDtyVYO5l3Puj2ZMACz/MK+sTSOqDHy53oRhVkXiBc=" \
--data "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
--data "subject_token=${AZURE_TOKEN}" \
--data "subject_token_type=urn:ietf:params:oauth:token-type:jwt" | jq '.'
Aufrufen der PowerFlex Manager-Appliance-API mit ausgetauschtem Token
curl -kL 'https://10.247.39.179/api/v1/appliance' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIzMkNrM2YwNEI5OG5pRENza19IVmZ3R..._dxDp9QGWdteptby-8aaA'
Aufrufen der PowerFlex Block-API mit ausgetauschtem Token
curl -kL GET https://10.247.39.179/api/types/Volume/instances --header 'Content-Type: application/json' --header "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIzMkNrM2YwNEI5OG5pRENza19IVmZ3R..._dxDp9QGWdteptby-8aaA "
[
{
"genType": "EC",
"mappedSdcInfo": [
{
"limitIops": null,
"limitBwInMbps": null,
"isDirectBufferMapping": null,
"sdcIp": "",
"sdcId": "15d47a2400010000",
"sdcName": "513fda498aaf35e883da34f6ac46480",
"nqn": "nqn.2014-08.org.nvmexpress:uuid:72f30442-1cf7-0f5b-129c-da4fae6a028b",
"accessMode": "ReadWrite",
"hostType": "NVMeHost"
}
],
"managedBy": "ScaleIO",
"originalExpiryTime": 0,
"retentionLevels": [],
"snplIdOfSourceVolume": null,
"volumeReplicationState": "UnmarkedForReplication",
"replicationJournalVolume": false,
"replicationTimeStamp": 0,
"name": "csivol-21ef5b460c",
"creationTime": 1763382058,
"storagePoolId": "0ebdb61000000000",
"dataLayout": "ErasureCoding",
"vtreeId": "97957f7d00000002",
"sizeInKb": 8388608,
"compressionMethod": "NotApplicable",
"volumeClass": "defaultclass",
"accessModeLimit": "ReadWrite",
"lockedAutoSnapshotMarkedForRemoval": false,
"snplIdOfAutoSnapshot": null,
"pairIds": null,
"useRmcache": false,
"volumeType": "ThinProvisioned",
"consistencyGroupId": null,
"ancestorVolumeId": null,
"notGenuineSnapshot": false,
"secureSnapshotExpTime": 0,
"lockedAutoSnapshot": false,
"autoSnapshotGroupId": null,
"timeStampIsAccurate": false,
"nsid": 3,
"id": "77d698a400000002",
"links": [
{
"rel": "self",
"href": "/api/instances/Volume::77d698a400000002"
},
{
"rel": "/dtapi/rest/v1/metrics/query",
"href": "/dtapi/rest/v1/metrics/query",
"body": {
"resource_type": "volume",
"ids": [
"77d698a400000002"
]
}
},
{
"rel": "/api/parent/relationship/vtreeId",
"href": "/api/instances/VTree::97957f7d00000002"
},
{
"rel": "/api/parent/relationship/storagePoolId",
"href": "/api/instances/StoragePool::0ebdb61000000000"
}
]
},
{
"genType": "EC",
"mappedSdcInfo": null,
"managedBy": "ScaleIO",
"originalExpiryTime": 0,
"retentionLevels": [],
"snplIdOfSourceVolume": null,
"volumeReplicationState": "UnmarkedForReplication",
"replicationJournalVolume": false,
"replicationTimeStamp": 0,
"name": "csivol-4ea9633592",
"creationTime": 1763380456,
"storagePoolId": "0ebdb61000000000",
"dataLayout": "ErasureCoding",
"vtreeId": "9795586d00000000",
"sizeInKb": 8388608,
"compressionMethod": "NotApplicable",
"volumeClass": "defaultclass",
"accessModeLimit": "ReadWrite",
"lockedAutoSnapshotMarkedForRemoval": false,
"snplIdOfAutoSnapshot": null,
"pairIds": null,
"useRmcache": false,
"volumeType": "ThinProvisioned",
"consistencyGroupId": null,
"ancestorVolumeId": null,
"notGenuineSnapshot": false,
"secureSnapshotExpTime": 0,
"lockedAutoSnapshot": false,
"autoSnapshotGroupId": null,
"timeStampIsAccurate": false,
"nsid": 1,
"id": "77d6719400000000",
"links": [
{
"rel": "self",
"href": "/api/instances/Volume::77d6719400000000"
},
{
"rel": "/dtapi/rest/v1/metrics/query",
"href": "/dtapi/rest/v1/metrics/query",
"body": {
"resource_type": "volume",
"ids": [
"77d6719400000000"
]
.
.
.
]
}
]