PowerFlex: Configuración de Single Sign On de PowerFlex con Microsoft Azure mediante OpenID Connect (OIDC)

Resumen: En este artículo, se explica cómo configurar la administración de acceso e identidades del cliente (CIAM) de PowerFlex para SSO con Microsoft Azure Entra ID mediante OIDC.

Este artículo se aplica a Este artículo no se aplica a Este artículo no está vinculado a ningún producto específico. No se identifican todas las versiones del producto en este artículo.

Instrucciones

En este artículo, se explica la configuración de la administración de acceso e identidades del cliente (CIAM) de PowerFlex para SSO con Microsoft Azure Entra ID mediante OIDC, incluida la configuración de certificados, la configuración del proveedor de servicios (SP) y el IdP, el intercambio de tokens y la validación del acceso a la API. Esta configuración permite aprovechar las funcionalidades de SSO. Requiere cambios en la configuración tanto en PowerFlex como en Microsoft Azure.

Este artículo está dirigido a administradores y personal de seguridad que utilizan PowerFlex.

PowerFlex CIAM se integra con IdP compatibles con OIDC, incluido Microsoft Azure Entra ID, para permitir la autenticación centralizada y el acceso seguro a la API.

En este artículo, se proporciona un proceso paso a paso para configurar Single Sign On de PowerFlex con Microsoft Azure a través de la API REST. Esta es la lista de pasos generales:

  1. Inicializar CIAM y configurar PowerFlex como proveedor de servicios (SP) de OIDC
  2. Registrar el ID de Microsoft Azure Entra como proveedor de identidades de OIDC (IdP)
  3. Agregue los certificados de CA necesarios (DigiCert/GlobalSign) al CIAM
  4. Configurar notificaciones de aplicaciones de Microsoft Azure, URI de redirección y permisos
  5. Crear clientes de OAuth2 de CIAM y asignaciones de intercambio de tokens
  6. Obtenga un token de Microsoft Azure, cámbielo por un token de PowerFlex y valide el acceso a la API REST

Terminología

En la siguiente tabla, se describen los términos y conceptos importantes necesarios para completar este proceso:

Término Descripción
Dirección IP de la máquina virtual de administración (MVM) Las direcciones IP de MVM que alojan PowerFlex Manager y los servicios de administración. Un nodo de servidor de datos de almacenamiento (SDS) de MVM Puede encontrar las direcciones IP de MVM iniciando sesión en la interfaz de usuario de PowerFlex Manager. Vaya a System-Components>> MVM.  Por ejemplo, 10.2xx.3xx.184, 10.2xx.3xx.185, 10.2xx.3xx.186
Servidor de datos de almacenamiento (SDS) El nodo del servidor de datos de almacenamiento (SDS) que aloja los MVM.
Dirección IP de entrada La IP externa para rke2-ingress-nginx-controller (balanceador de carga/terminal de ingreso)
Administración de acceso e identidades del cliente (CIAM) Los servicios de administración de acceso e identidades del cliente de PowerFlex para OAuth2/OIDC
Proveedor de servicio (SP) Proveedor de identidades (IdP)|El proveedor de servicios (lado de PowerFlex/Keycloak) y el proveedor de identidades (ID de Microsoft Azure Entra)

 

Requisitos previos

Hay un script de automatización (oidc_azure.tar) que se utiliza para conectar el ID de Microsoft Azure Entra con PowerFlex.

El script está en un formato de archivo tar y se debe descargar y copiar en el MVM:

Para copiar el oidc_azure. tar, debe tener acceso administrativo a la máquina virtual de administración de PowerFlex.

Aquí está el archivo:   oidc_azure.tar

Debe ejecutar los comandos en la captura de pantalla que aparece a continuación, ya que las variables que se exportan se reutilizan en los pasos y scripts de este proceso.

Nota: Si ve errores de permisos, abra un shell de inicio de sesión raíz mediante la ejecución del siguiente comando: sudo -i

 

¿Qué hace cada comando?

  • El 'kubectl get svc -A | grep "sso " | awk '{print $4}'El comando devuelve la dirección IP del clúster del servicio SSO en el clúster de Kubernetes.
  • El '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' inicia sesión en PowerFlex mediante la API REST de SSO y recupera un token de acceso (JWT) que se utiliza para llamadas posteriores de API a los servicios de PowerFlex.
  • El'kubectl get svc -A | grep -m1 rke2-ingress-nginx-controller | sort | awk '{print $5}''devuelve la dirección IP externa del servicio rke2-ingress-nginx-controller, que es típicamente el balanceador de carga o la IP del controlador de entrada utilizada para el tráfico externo.

 

Cuando se ejecutan estos comandos, se exportan las siguientes variables:

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. Inicializar CIAM y configurar PowerFlex como proveedor de servicios (SP) de OIDC

Este paso es el punto de partida en el proceso de integración de CIAM con PowerFlex mediante OpenID Connect (OICD). Se inicializa la configuración de CIAM de SSO para PowerFlex.

APIPOST /rest/v1/sso-ciam/init

Comando: 

 
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}"

Guión:  ./init.sh

Producción: Un número entero, el ID de grupo de usuarios del CIAM, es decir, "2"

 

2. Configure PowerFlex con Keycloak como proveedor de servicios de OIDC.

En este paso, se registra y configura PowerFlex como proveedor de servicio OIDC con Keycloak (u otro IdP), lo que permite la autenticación SSO segura mediante OpenID Connect.

Operación de API: EXPONER /rest/v1/oidc-sp-config

Comando:

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}'

Guión:  ./add_oidc_sp.sh

Salida (truncada): Nuevo proveedor de servicios

 
{"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 Enumere el proveedor de servicios de OIDC.

En este paso, se recupera la configuración actual del proveedor de servicio de OIDC de PowerFlex,

Comando:

curl -kL https://$IN_IP/rest/v1/oidc-sp-config --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}" | jq -r '.results[]'

Guión: ./list_oidc_sp.sh

Salida de muestra (truncada): Un proveedor de servicios creado en el paso anterior.

{"results":[{"id":"00000000-0000-0000-0000-000000000000","sp_id":"powerflex-10.247.39.179",...}]

 

3. Agregue la autoridad de certificación a PowerFlex para los servicios de CIAM.

Este paso implica informar a PowerFlex en qué autoridad de certificación debe confiar cuando valide la comunicación segura con el sistema CIAM. Hay dos certificados para los servicios de CIAM:

  • DigiCert es una Autoridad de Certificación (CA) de confianza. Los servicios de Microsoft Azure (como Microsoft Azure AD, los terminales OIDC y las API de Microsoft) utilizan certificados SSL/TLS emitidos por DigiCert para proteger la comunicación.
  • Los certificados GA2 (GlobalSign o similar) son parte de la cadena de certificados que valida los puntos finales de identidad de Microsoft Azure. Aseguran:
    • La URL de metadatos de OIDC (https://login.microsoftonline.com/...)(Enlace externo) y los terminales de token son de confianza.
    • Comunicación HTTPS segura entre PowerFlex y el IdP de Microsoft Azure.

Esta operación garantiza que CIAM confíe en los terminales de Microsoft Azure.

El siguiente comando utiliza archivos con certificados codificados PEM, donde las líneas nuevas se reemplazan por "\n". Básicamente, solo hay una línea en dicho archivo.

Por ejemplo:

 
-----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: Certificados POST /api/v1/CIAM/<ciam_id>/x509

Comando:

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\"
}"
Nota: https ://$IN_IP//Api/V1/CIAM/2/x509-certificate: este es el número 2 de la salida de init.sh en el paso 1.

 

Guión: ./add_cert.sh <certificate_pem_file>

Salida de muestra (truncada):

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 Verifique que los certificados se agreguen y aparezcan en la lista.

En este paso, se verifica que los certificados se agreguen y aparezcan en la lista.

Comando:

 
curl -kL https://$IN_IP/Api/V1/CIAM/2/x509-certificates --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}"

Nota: https://$IN_IP//Api/V1/CIAM/2/x509-certificate: este es el número 2 del init.sh en el paso 1.

Guión: ./list_certs.sh

Salida de muestra (truncada):

{"results":[{"id":"4a4d7f6b-251c-41a6-b304-783ed6d5fbc2","certificate":"-----BEGIN ....-----END PUBLIC KEY-----\n"}]}

 

4. Registre el ID de Microsoft Azure Entra como el servicio OIDC (IdP)

En este paso, se registra el ID de Microsoft Azure Entra como proveedor de identidades externo para PowerFlex mediante OpenID Connect (OIDC), lo que permite a los usuarios autenticarse a través de Microsoft Azure en lugar de confiar en las credenciales locales de PowerFlex.

Variables:

  • ID de grupo de usuarios: El ID de grupo de usuarios identifica el grupo de usuarios de Microsoft Azure Active Directory al que pertenece el proveedor de identidades. Puede encontrarla en la página Descripción general de la pantalla de inicio de la aplicación en Microsoft Azure.
  • KK_ID: El ID de KK identifica el ID de cliente de la aplicación de Microsoft Azure.
  • KK_SECRET: El secreto de KK identifica el secreto de cliente de 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\"
}"

 Guión: ./add_oidc_service.sh

Salida de muestra (truncada):

{
  "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
}
 Importante:  Debe guardar el ID de servicio de OIDC de la respuesta (p. ej., a230b7b8-...); lo necesitará para el URI de redireccionamiento de Microsoft Azure y el mapeo de intercambio de tokens CIAM.

 

 

4.1 Enumere el servicio de OIDC.

En este paso, se enumera el servicio de OIDC.

Comando:

curl -kL https://$IN_IP/rest/v1/oidc-services --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}"

 Guion: list_oidc_service.sh 

Ejemplo (truncado):

./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. Configure la dirección URL de redireccionamiento en Microsoft Azure.

Este paso implica configurar Microsoft Azure para enviar a los usuarios a un destino denominado dirección URL de redireccionamiento después de iniciar sesión correctamente.

En el Portal de Microsoft Azure, vaya a Registro → autenticaciónde aplicacionesURI de redirección y agregue la siguiente dirección URL:

https://< PFMP_IP>/auth/realms/powerflex/broker/<SERVICE_ID_AZURE>/endpoint

Por ejemplo: https://10.247.39.179/auth/realms/powerflex/broker/a230b7b8-8f6c-47db-9327-2e48db8040a9/endpoint

  • <> PFMP_IP es la IP de PowerFlex Manager (si es necesario, resuelva el nombre de host)
  • <> SERVICE_ID_AZURE es el IdP del ID de servicio del paso 4.

 

6. Configure las notificaciones de token en Microsoft Azure.

a) Agregar notificaciones opcionales (token de ID)

  1. En el portal de Microsoft Azure, vaya a Configuración de tokenAgregar notificación opcional.
  2. En Token type, seleccione ID.
  3. En Reclamar, seleccione la casilla de verificación junto a los siguientes atributos:
    • Correo electrónico

    • family_name

    • given_name

    • preferred_username

  4. Haga clic en Agregar.

 

 b) Agregar notificaciones de grupo

  1. En el portal de Microsoft Azure, vaya a Configuración de tokenAgregar notificaciones de grupo.           
  2. En Editar notificación de grupos, seleccione la casilla de verificación junto a Grupos asignados a la aplicación.   
  3. En ID, seleccione la casilla de verificación junto a ID de grupo.                                                                   
  4. En Acceso, seleccione la casilla de verificación junto a ID de grupo.                                                             
  5. Haga clic en Agregar.

Utilizará estos ID de grupo más adelante para la asignación de funciones de PowerFlex en la interfaz de usuario de PowerFlex Manager.

 

7. Configure los permisos de API en Microsoft Azure.

Este paso garantiza que PowerFlex tenga el acceso correcto a los recursos protegidos en Microsoft Azure.

  1. En el portal de Microsoft Azure, vaya a Permisos de API Microsoft Graph.
  2. En Request API permissions, seleccione
  3. En Request API permissions, seleccione User Read.
  4. Haga clic en Actualizar permisos.

 

8. (Opcional) Asignar usuarios/grupos en Microsoft Azure.

Este paso otorga acceso a las personas o los equipos adecuados a PowerFlex asignándolos a funciones o grupos específicos dentro de Microsoft Azure Active Directory.

  1. En el portal de Microsoft Azure, vaya a Aplicaciones empresariales → Usuarios y grupos.
  2. En Nombre para mostrar, seleccione la casilla de verificación junto al usuario/grupo y copie el ID de objeto.

El ID de objeto se utiliza para el mapeo de funciones basado en notificaciones en PowerFlex.

 

9. (Opcional) Agregue el usuario o el grupo en la interfaz de usuario de PowerFlex

Este paso implica otorgar acceso dentro de PowerFlex agregando el usuario o grupo adecuado directamente en el usuario de PowerFlex Manager, lo que garantiza que puedan iniciar sesión y utilizar el sistema de acuerdo con sus funciones y permisos asignados.

  1. Inicie sesión en la interfaz de usuario de PowerFlex Manager.
  2. Vaya a ConfiguraciónAdministración de usuariosAgregar usuario/grupo remoto.
  3. Ingrese la siguiente información:
    1. Tipo: grupo
    2. Proveedor: Azure
    3. Nombre de grupo: cualquier nombre significativo
    4. Nombre de la reclamación: groups
    5. Función de usuario: Superusuario
    6. Valor de la reclamación: ID de objeto de Microsoft Azure (paso 8)

10. Agregue el cliente a CIAM.

Este paso agrega el cliente a CIAM para registrar PowerFlex, de modo que CIAM pueda determinar qué aplicación solicita autenticación, dónde enviar tokens, qué permisos necesita la aplicación y qué flujos de autenticación puede usar.

API: POST /rest/v1/oauth2-clients

Comando:

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\"

Guión: ./addclient_ciam.sh

Ejemplo del mensaje de salida:

./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
Nota: Debe guardar el ID de cliente y client_secret de CIAM, ya que son necesarios para el intercambio de tokens entre Microsoft Azure y PowerFlex.

 

 

10.1 Verifique que el cliente se haya agregado al incluirlo en la lista.

Este paso verifica que el cliente se haya agregado correctamente mediante una lista de todos los clientes existentes.

Comando: 

curl -kL https://$IN_IP/rest/v1/oauth2-clients --header 'Content-Type: application/json' --header "Authorization: Bearer ${PM_TOKEN}" | jq -r '.results[]'

Guión: ./list_clients_ciam.sh

Ejemplo:

./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 Modificar el cliente.

Este paso actualiza un cliente de inicio de sesión existente en CIAM. La carga útil debe permanecer vacía ({}). Este comando agrega los mapeos requeridos de PowerFlex al cliente Keycloak.

Comando:

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 '{}'

Guión: ./update_client.sh <ID_FROM_ADD_CLIENT_CIAM>

Ejemplo:

 
./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. Adición de la aplicación a CIAM para la asignación de intercambio de tokens

Este paso agrega la aplicación a CIAM para habilitar la autenticación externa, la autorización y los flujos de identidad segura.

API: POST /rest/v1/oauth2-token-exchanges

Variables requeridas:

  • LOCAL_CLIENT_ID: ID de addclient_ciam.sh (p. ej., 77ce10cb-c40e-4c1e-b922-07014b5b6e7b)
  • EXT_CLIENT_ID:      ID de Microsoft Entra ID ID de aplicación (cliente) (p. ej., 859c0721-cb0c-433c-a437-bd2d2462754f)
  • METADATOS:            URL de metadatos de aplicaciones de Microsoft Azure (p. ej., https://login.microsoftonline.com/< Tenant_id>/v2.0/.well-known/openid-configuration)
  • IDP:                        ID de servicio de OIDC (p. ej., a230b7b8-8f6c-47db-9327-2e48db8040a9)
  • FUNCIÓN:                     Función de PowerFlex (p. ej., superusuario)
  • PM_TOKEN:           Token de portador de API
  • IN_IP:                     Dirección IP/host de destino


Comando:

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"]
}

Guión: ./add_app.sh

 

11.1 Enumere el ID de aplicación

En este paso, se recupera el ID de la aplicación para validar el identificador de cliente único necesario para la autorización descendente y las operaciones de intercambio de tokens.

Comando:

curl -kL "https://$IN_IP/rest/v1/oidc-services" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer ${PM_TOKEN}"

 Guión: 

 
./list_apps.sh

Ejemplo:

./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"  ]
}
Nota: Tome nota de esta identificación.

 

 

12. Asignar funciones en Keycloak (dominio de PowerFlex)

Este paso asigna funciones en el dominio Keycloak de PowerFlex para alinear las asignaciones de funciones del proveedor de identidades con los requisitos de autorización de PowerFlex.

1. Inicie sesión en Keycloak mediante el siguiente terminal: https://< PFMP_IP>/auth/admin/

Por ejemplo: https://10.247.39.179/auth/admin/

Para iniciar sesión en Keycloak, las credenciales se pueden recuperar como se muestra a continuación 

Comando:

kubectl get secret keycloak-admin-credentials -o json -n powerflex | jq '.data | map_values(@base64d)'

Guión: ./get_keycloak_creds.sh

Ejemplo: 

./get_keycloak_creds.sh
{
  "password": "sZFmHmfhjj",
  "username": "keycloak"
}

2. En la instancia de Keycloak, seleccione el PowerFlex.

3. Haga clic en Usuarios, seleccione el ID de usuario y actualice los atributos para que coincidan con la función utilizada en CIAM (por ejemplo, Superusuario).

4. En Role mapping, verifique que la función esté actualizada.

 

13. Obtener el token de Microsoft Azure (credenciales de contraseña del propietario del recurso / nombre de usuario + contraseña)

Hay varias maneras de obtener un token de Microsoft Azure AD. En este ejemplo de paso, la aplicación inicia sesión en el identificador de Microsoft Entra (Azure AD) mediante el envío directo del nombre de usuario + la contraseña de un usuario al punto de conexión del token para recibir un token de OAuth 2.0. Esta es la concesión de las credenciales de contraseña del propietario del recurso (ROPC).

Comando:

 
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")

Guión:./get_azure_token.sh

Sugerencia: Para asegurarse de que el token es válido, vaya al depurador de tokens web JSON (JWT) (enlace externo)

 

14. Intercambiar el token de Microsoft Azure por el token de PowerFlex (CIAM)

En este paso, se intercambia el token de Microsoft Azure por un token CIAM de PowerFlex, de modo que se puedan llamar a las API de PowerFlex.

API: POST /rest/v1/token

Variables:

  • CIAM_CLIENT_ID: ID de cliente del paso Agregar el cliente a CIAM (paso 10)
  • CIAM_CLIENT_SECRET - Secreto de cliente del paso Agregar el cliente a CIAM (paso 10)
  • EXT_TOKEN: token de Microsoft Azure

Comando:

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 (utiliza el EXT_TOKEN, por lo tanto, establece la variable de entorno en consecuencia)

Ejemplo de salida (truncado):

{
  "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. Verifique el acceso a la API REST de PowerFlex

Este paso confirma que el token funciona llamando a un terminal REST de PowerFlex. Utiliza el access_token de la salida del "token.sh", exportado como variable de ambiente PM_TOKEN.

export PM_TOKEN=eyJhb...eN_A

Comando:

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
    }
  } ]
}

 

Información de referencia

Resumen de la secuencia de API

  1. Inicializar CIAM para PowerFlex
    (/rest/v1/sso-ciam/init)
  2. Configuración de PowerFlex como proveedor
    de servicios de OIDC(/rest/v1/oidc-sp-config)
  3. Agregar certificados para los servicios
    de CIAM(DigiCert, GlobalSign, etc.)
  4. Registrar el ID de Microsoft Azure Entra como servicio
    OIDC(/rest/v1/oidc-services)
  5. Configurar el ID de servicio en la pestaña Autenticación de
    Microsoft Azure(Asignación de terminales de agentes)
  6. Establecimiento de notificaciones de token y grupo en Microsoft Azure
    (Notificaciones opcionales, permisos de API)
  7. Agregar cliente OAuth2 en CIAM
    (/rest/v1/oauth2-clients)
  8. Agregar una aplicación a CIAM para el intercambio
    de tokens(/rest/v1/oauth2-token-exchanges)
  9. Obtenga un token de Microsoft Azure para intercambiarlo por un token
    de PowerFlex(/rest/v1/token)
  10. Verifique el acceso a las API REST de PowerFlex

 

 

Comandos para realizar un intercambio de tokens

Llamadas a las API de PowerFlex con el token Microsoft Azure Entra


Comando para realizar un intercambio de tokens:

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 '.'

Ejemplo:

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 '.'

Llamada a la API del dispositivo PowerFlex Manager con token intercambiado

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'

 

Llamada a la API de bloques de PowerFlex con token intercambiado

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"
          ]
    .
.
.
    ]
  }
]

Productos afectados

PowerFlex rack, ScaleIO
Propiedades del artículo
Número del artículo: 000444444
Tipo de artículo: How To
Última modificación: 14 abr 2026
Versión:  4
Encuentre respuestas a sus preguntas de otros usuarios de Dell
Servicios de soporte
Compruebe si el dispositivo está cubierto por los servicios de soporte.