PowerFlex. Настройка единого входа PowerFlex с помощью Microsoft Azure с помощью OpenID Connect (OIDC)

Сводка: В этой статье рассказывается о настройке PowerFlex Customer Identity and Access Management (CIAM) для единого входа с Microsoft Azure Entra ID с помощью OIDC.

Данная статья применяется к Данная статья не применяется к Эта статья не привязана к какому-либо конкретному продукту. В этой статье указаны не все версии продуктов.

Инструкции

В этой статье рассказывается о настройке PowerFlex Customer Identity and Access Management (CIAM) для единого входа с идентификатором Microsoft Azure Entra с использованием OIDC, включая настройку сертификатов, настройку поставщика удостоверений и поставщика услуг (SP), обмен маркерами и проверку доступа к API. Такая конфигурация позволяет использовать преимущества единого входа. Для этого требуются изменения конфигурации как в PowerFlex, так и в Microsoft Azure.

Данная статья предназначена для администраторов и сотрудников службы безопасности, использующих PowerFlex.

PowerFlex CIAM интегрируется с поставщиками удостоверений, соответствующими требованиям OIDC, включая идентификатор Microsoft Azure Entra ID, чтобы обеспечить централизованную аутентификацию и безопасный доступ к API.

В этой статье приводятся пошаговые инструкции по настройке единого входа PowerFlex в Microsoft Azure с помощью REST API. Ниже приведен список высокоуровневых шагов.

  1. Инициализация CIAM и настройка PowerFlex в качестве поставщика услуг OIDC (SP)
  2. Регистрация идентификатора Microsoft Azure Entra в качестве поставщика удостоверений (IdP) OIDC
  3. Добавление необходимых сертификатов CA (DigiCert/GlobalSign) в CIAM
  4. Настройка утверждений приложений Microsoft Azure, URI перенаправления и разрешений
  5. Создание сопоставлений CIAM OAuth2 и обмена маркерами
  6. Получите токен Microsoft Azure, обменяйте его на токен PowerFlex и подтвердите доступ к API REST

Терминология

В следующей таблице описаны важные термины и понятия, необходимые для выполнения этого процесса.

Термин Описание
IP-адрес виртуальной машины управления (MVM) IP-адреса MVM, на которых размещаются PowerFlex Manager и службы управления. Один узел сервера данных хранения (SDS) MVM IP-адреса MVM можно найти в пользовательском интерфейсе PowerFlex Manager. Перейдите в раздел Система-Компоненты>> MVM.  Например, 10.2xx.3xx.184, 10.2xx.3xx.185, 10.2xx.3xx.186
Сервер хранения данных (SDS) Узел сервера хранения данных (SDS), на котором размещаются MVM.
IP-адрес входящего трафика Внешний IP-адрес для контроллера rke2-ingress-nginx (подсистема балансировки нагрузки/конечная точка входящего трафика).
Управление идентификацией и доступом клиентов (CIAM) Службы управления идентификацией и доступом заказчиков PowerFlex для OAuth2/OIDC
Поставщик услуг (SP) Поставщик удостоверений (IdP) |Поставщик услуг (на стороне PowerFlex/Keycloak) и поставщик удостоверений (идентификатор Microsoft Azure Entra ID)

 

Предварительные условия

Для подключения идентификатора Microsoft Azure Entra к PowerFlex используется скрипт автоматизации (oidc_azure.tar).

Сценарий имеет формат tar-файла, и его необходимо скачать и скопировать в MVM:

Чтобы скопировать oidc_azure. tar, у вас должен быть административный доступ к виртуальной машине управления PowerFlex.

Вот файл:   oidc_azure.tar

Необходимо выполнить команды, показанные на снимке экрана ниже, так как экспортируемые переменные повторно используются в шагах и сценариях этого процесса.

Примечание. Если вы видите ошибки разрешений, откройте оболочку входа root, выполнив команду: sudo -i

 

Что делает каждая команда?

  • Метод 'kubectl get svc -A | grep "sso " | awk '{print $4}''возвращает IP-адрес кластера сервиса единого входа в кластере Kubernetes.
  • Метод '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' выполняет вход в систему PowerFlex с помощью единого API-интерфейса REST и извлекает маркер доступа (JWT), который используется для последующих вызовов API сервисов PowerFlex.
  • В'kubectl get svc -A | grep -m1 rke2-ingress-nginx-controller | sort | awk '{print $5}''возвращает внешний IP-адрес службы rke2-ingress-nginx-controller, который обычно является IP-адресом балансировщика нагрузки или контроллера входящего трафика, используемым для внешнего трафика.

 

При выполнении этих команд экспортируются следующие переменные:

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. Инициализация CIAM и настройка PowerFlex в качестве поставщика услуг OIDC (SP)

Этот шаг является отправной точкой в процессе интеграции CIAM с PowerFlex с помощью OpenID Connect (OICD). Конфигурация SSO CIAM для PowerFlex инициализирована.

API: POST /rest/v1/sso-ciam/init

Команда. 

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

Сценарий:  ./init.sh

Выход: Целое число, идентификатор пользователя CIAM, т. е. "2"

 

2. Настройте PowerFlex с Keycloak в качестве поставщика услуг OIDC.

На этом шаге выполняется регистрация и настройка PowerFlex в качестве поставщика услуг OIDC с Keyclaak (или другим поставщиком удостоверений), что обеспечивает безопасную аутентификацию единого входа с помощью OpenID Connect.

Работа API: ПОМЕСТИТЬ /rest/v1/oidc-sp-config

Команда.

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

Сценарий:  ./add_oidc_sp.sh

Выходные данные (усеченные): Новый поставщик услуг

 
{"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 Укажите поставщика услуг OIDC.

На этом шаге извлекается текущая конфигурация поставщика услуг OIDC из PowerFlex.

Команда.

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

Сценарий: ./list_oidc_sp.sh

Вывод выборки (усеченный): Поставщик услуг, созданный на предыдущем шаге.

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

 

3. Добавьте источник сертификатов в PowerFlex для сервисов CIAM.

На этом этапе система PowerFlex информирована о том, какому центру сертификации следует доверять при проверке безопасного обмена данными с системой CIAM. Существует два сертификата на услуги ЦИАМ:

  • DigiCert — это доверенный источник сертификатов (CA). Службы Microsoft Azure (например, Microsoft Azure AD, конечные точки OIDC и Microsoft API) используют сертификаты SSL/TLS, выданные DigiCert, для безопасного обмена данными.
  • Сертификаты GA2 (GlobalSign или аналогичные корневые/промежуточные сертификаты) являются частью цепочки сертификатов, которая проверяет конечные точки удостоверения Microsoft Azure. Они обеспечивают:
    • URL-адрес метаданных OIDC (https://login.microsoftonline.com/...)(внешняя ссылка) и конечные точки маркера являются доверенными.
    • Безопасный обмен данными по протоколу HTTPS между PowerFlex и поставщиком удостоверений Microsoft Azure.

Эта операция гарантирует, что CIAM доверяет конечным точкам Microsoft Azure.

Приведенная ниже команда использует файлы с сертификатами в формате PEM, где новые строки заменяются на «\n». По сути, в таком файле всего одна строка.

Пример.

 
-----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-сертификаты

Команда.

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\"
}"
Примечание: https://$IN_IP//Api/V1/CIAM/2/x509-certificate - вот цифра 2 из вывода init.sh в шаге 1.

 

Сценарий: ./add_cert.sh <certificate_pem_file>

Вывод выборки (усеченный):

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 Убедитесь, что сертификаты добавлены и перечислены.

На этом шаге проверяется, что сертификаты добавлены и перечислены.

Команда.

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

Примечание: https://$IN_IP//Api/V1/CIAM/2/x509-certificate - вот цифра 2 из init.sh на шаге 1.

Сценарий: ./list_certs.sh

Вывод выборки (усеченный):

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

 

4. Регистрация идентификатора Microsoft Azure Entra в качестве службы OIDC (IdP)

На этом этапе идентификатор Microsoft Azure Entra регистрируется в качестве внешнего поставщика удостоверений для PowerFlex с помощью OpenID Connect (OIDC), что позволяет пользователям аутентифицироваться с помощью Microsoft Azure, а не полагаться на локальные учетные данные PowerFlex.

Переменные:

  • Идентификатор пользователя: Идентификатор клиента определяет клиент Microsoft Azure Active Directory, к которому принадлежит поставщик удостоверений. Его можно найти на странице «Обзор» на главном экране приложения в Microsoft Azure.
  • KK_ID: Идентификатор KK определяет идентификатор клиента приложения Microsoft Azure.
  • KK_SECRET: Секрет KK определяет секрет клиента 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\"
}"

 Сценарий: ./add_oidc_service.sh

Вывод выборки (усеченный):

{
  "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
}
 Важно!  Необходимо сохранить идентификатор службы OIDC из ответа (например, a230b7b8-...). он понадобится вам для сопоставления URI перенаправления Microsoft Azure и обмена маркерами CIAM.

 

 

4.1 Вывод списка сервиса OIDC.

На этом шаге отображается список сервисов OIDC.

Команда.

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

 Сценарий: list_oidc_service.sh 

Пример (усеченный):

./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. Настройте URL-адрес перенаправления в Microsoft Azure.

Этот шаг включает в себя настройку Microsoft Azure для отправки пользователей в место назначения, называемое URL-адресом перенаправления, после успешного входа в систему.

На портале Microsoft Azure перейдите в раздел URIs → регистрации приложенийперенаправления и добавьте следующий URL-адрес:

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

Например: https://10.247.39.179/auth/realms/powerflex/broker/a230b7b8-8f6c-47db-9327-2e48db8040a9/endpoint

  • <> PFMP_IP — IP-адрес PowerFlex Manager (при необходимости укажите имя хоста)
  • <> SERVICE_ID_AZURE — это поставщик удостоверений из идентификатора службы из шага 4.

 

6. Настройте утверждения маркеров в Microsoft Azure.

а) Добавление дополнительных утверждений (маркер идентификатора)

  1. На портале Microsoft Azure перейдите в раздел Конфигурация токенадобавьте опциональное утверждение.
  2. В поле Тип токена выберите ID.
  3. В разделе Заявка установите флажки рядом со следующими атрибутами:
    • Отправить по электронной почте

    • family_name

    • given_name

    • preferred_username

  4. Нажмите Добавить.

 

 б) Добавление групповых заявок

  1. На портале Microsoft Azure перейдите в раздел Конфигурация маркераДобавить утверждения группы.           
  2. В разделе Изменить утверждение групп установите флажок рядом с пунктом Группы, назначенные приложению.   
  3. В разделе ID установите флажок рядом с Group ID.                                                                   
  4. В разделе Доступ установите флажок рядом с пунктом Group ID.                                                             
  5. Нажмите Добавить.

Позже эти идентификаторы групп будут использоваться для сопоставления ролей PowerFlex в пользовательском интерфейсе PowerFlex Manager.

 

7. Настройка разрешений API в Microsoft Azure.

Это действие гарантирует PowerFlex правильный доступ к защищенным ресурсам в Microsoft Azure.

  1. На портале Microsoft Azure перейдите в раздел Разрешения API Microsoft Graph.
  2. В разделе Запрос разрешений API выберите
  3. В разделе Запросы разрешений API выберите Пользователь Чтение.
  4. Нажмите Update permissions.

 

8. (Дополнительный) Назначение пользователей и групп в Microsoft Azure.

На этом этапе соответствующим пользователям или группам предоставляется доступ к PowerFlex путем назначения им определенных ролей или групп в Microsoft Azure Active Directory.

  1. На портале Microsoft Azure перейдите в раздел Корпоративные приложения → Пользователи и группы.
  2. В разделе Отображаемое имя установите флажок рядом с пользователем/группой и скопируйте идентификатор объекта.

Идентификатор объекта используется для сопоставления ролей на основе заявок в PowerFlex.

 

9. (Дополнительный) Добавление пользователя/группы в пользовательский интерфейс PowerFlex

На этом этапе необходимо предоставить доступ в PowerFlex путем добавления соответствующего пользователя или группы непосредственно в список пользователей PowerFlex Manager, чтобы они могли войти в систему и использовать ее в соответствии с назначенными ролями и разрешениями.

  1. Войдите в пользовательский интерфейс PowerFlex Manager.
  2. Перейдите в раздел НастройкиУправление пользователямиДобавить удаленного пользователя/группу.
  3. Введите следующую информацию:
    1. Тип: группа
    2. Поставщика: Azure
    3. Имя группы: любое осмысленное имя
    4. Имя заявки: groups
    5. Роль пользователя: Администратор системы
    6. Стоимость заявки: Идентификатор объекта из Microsoft Azure (шаг 8)

10. Добавьте клиента в ЦИАМ.

На этом шаге клиент добавляется в CIAM для регистрации PowerFlex, чтобы CIAM мог определить, какое приложение запрашивает аутентификацию, куда отправлять маркеры, какие разрешения необходимы приложению и какие потоки проверки подлинности оно может использовать.

API: POST /rest/v1/oauth2-clients

Команда.

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

Сценарий: ./addclient_ciam.sh

Пример выходных данных:

./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
Примечание. Необходимо сохранить идентификатор и client_secret клиента CIAM, так как они необходимы для обмена маркерами между Microsoft Azure и PowerFlex.

 

 

10.1 Убедитесь, что клиент добавлен, перечислив его.

Этот шаг позволяет убедиться, что клиент успешно добавлен, путем вывода списка всех существующих клиентов.

Команда. 

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

Сценарий: ./list_clients_ciam.sh

Пример:

./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 Изменение клиента.

Этот шаг обновляет существующий клиент входа в CIAM. Полезные данные должны оставаться пустыми ({}). Эта команда добавляет необходимые для PowerFlex сопоставления в клиент Keycloak.

Команда.

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

Сценарий: ./update_client.sh <ID_FROM_ADD_CLIENT_CIAM>

Пример:

 
./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. Добавление приложения в CIAM для сопоставления обмена маркерами

На этом шаге приложение добавляется в CIAM для обеспечения внешней аутентификации, авторизации и безопасных потоков идентификации.

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

Обязательные переменные:

  • LOCAL_CLIENT_ID: Идентификатор из addclient_ciam.sh (например, 77ce10cb-c40e-4c1e-b922-07014b5b6e7b)
  • EXT_CLIENT_ID:      Идентификатор приложения Microsoft Entra ID (клиента) (например, 859c0721-cb0c-433c-a437-bd2d2462754f)
  • МЕТАДАННЫХ:            URL-адрес метаданных приложения Microsoft Azure (например, https://login.microsoftonline.com/< Tenant_id>/v2.0/.well-known/openid-configuration)
  • IDP:                        Идентификатор сервиса OIDC (например, a230b7b8-8f6c-47db-9327-2e48db8040a9)
  • РОЛЬ:                     Роль PowerFlex (например, суперпользователь)
  • PM_TOKEN:           Токен носителя API
  • IN_IP:                     Хост/IP-адрес целевого объекта


Команда.

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

Сценарий: ./add_app.sh

 

11.1 Вывод идентификатора приложения

На этом шаге извлекается идентификатор приложения для проверки уникального идентификатора клиента, необходимого для последующей авторизации и операций обмена маркерами.

Команда.

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

 Сценарий: 

 
./list_apps.sh

Пример:

./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. Сопоставление ролей в Keycloak (область PowerFlex)

На этом шаге сопоставляется роли в области PowerFlex Keycloak для согласования назначений ролей поставщика идентификационных данных с требованиями авторизации PowerFlex.

1. Войдите в Keycloak с помощью следующей конечной точки: https://< PFMP_IP>/auth/admin/

Например: https://10.247.39.179/auth/admin/

Чтобы войти в Keycloak, учетные данные можно получить, как показано ниже 

Команда.

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

Сценарий: ./get_keycloak_creds.sh

Пример: 

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

2. В экземпляре Keyclak выберите PowerFlex.

3. Нажмите Пользователи, выберите идентификатор пользователя и обновите атрибуты в соответствии с ролью, используемой в CIAM (например, SuperUser).

4. В разделе Сопоставление ролей убедитесь, что роль обновлена.

 

13. Получите токен Microsoft Azure (пароль владельца ресурса, учетные данные / имя пользователя + пароль)

Существует несколько способов получения токена из Microsoft Azure AD. В примере этого шага приложение выполняет вход в идентификатор Microsoft Entra (Azure AD), напрямую отправляя имя пользователя + пароль в конечную точку маркера для получения маркера OAuth 2.0. Это предоставление пароля владельца ресурса (ROPC).

Команда.

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

Сценарий:./get_azure_token.sh

Совет. Чтобы убедиться, что маркер действителен, перейдите в отладчик веб-маркеров JSON (JWT) (внешняя ссылка)

 

14. Обмен маркера Microsoft Azure на токен PowerFlex (CIAM)

На этом этапе маркер Microsoft Azure заменяется маркером PowerFlex CIAM, что позволяет вызвать API-интерфейсы PowerFlex.

API: POST /rest/v1/token

Переменные:

  • CIAM_CLIENT_ID — идентификатор клиента из шага «Добавление клиента в CIAM» (шаг 10)
  • CIAM_CLIENT_SECRET - Секрет клиента из Добавление клиента в CIAM, шаг (шаг 10)
  • EXT_TOKEN — токен из Microsoft Azure

Команда.

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"

Сценарии: ./token.sh (использует EXT_TOKEN поэтому задает переменную среды соответствующим образом)

Пример выходных данных (усеченный):

{
  "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. Проверка доступа к API-интерфейсу REST PowerFlex

Этот шаг подтверждает, что токен работает, путем вызова конечной точки REST PowerFlex. Он использует access_token из выходных данных "token.sh", экспортируемых как переменная env PM_TOKEN.

export PM_TOKEN=eyJhb...eN_A

Команда.

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

 

Справочная информация

Сводка по последовательности API

  1. Инициализация CIAM для PowerFlex
    (/rest/v1/sso-ciam/init)
  2. Настройка PowerFlex в качестве поставщика
    услуг OIDC(/rest/v1/oidc-sp-config)
  3. Добавление сертификатов для услуг
    ЦИАМ(DigiCert, GlobalSign и т. п.)
  4. Регистрация идентификатора Microsoft Azure Entra в качестве службы
    OIDC(/rest/v1/oidc-services)
  5. Настройка идентификатора службы на вкладке «Аутентификация Microsoft Azure»
    (сопоставление конечной точки брокера)
  6. Задание маркеров и утверждений групп в Microsoft Azure
    (необязательные утверждения, разрешения API)
  7. Добавление клиента OAuth2 в CIAM
    (/rest/v1/oauth2-clients)
  8. Добавление приложения в ЦИАМ для обмена
    токенами(/rest/v1/oauth2-token-exchanges)
  9. Получение токена Microsoft Azure для обмена на токен
    PowerFlex(/rest/v1/токен)
  10. Проверка доступа к API-интерфейсам REST PowerFlex

 

 

Команды для выполнения обмена токенами

Вызов API-интерфейсов PowerFlex с помощью токена Microsoft Azure Entra


Команда для выполнения обмена токенами:

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

Пример:

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

Вызов API-интерфейса устройства PowerFlex Manager с обменом маркерами

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'

 

Вызов API-интерфейса блочной системы PowerFlex с обменом маркерами

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

Затронутые продукты

PowerFlex rack, ScaleIO
Свойства статьи
Номер статьи: 000444444
Тип статьи: How To
Последнее изменение: 14 Apr 2026
Версия:  4
Получите ответы на свои вопросы от других пользователей Dell
Услуги технической поддержки
Проверьте, распространяются ли на ваше устройство услуги технической поддержки.