Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Мы вводим важные изменения для поддержки более детализированного ролевого доступа к конфиденциальной информации. В рамках этих изменений некоторые действия могут потребоваться к 3 сентября 2019 г., если вы используете одну из затронутых сущностей или сценариев.
Что меняется?
Ранее секреты можно было получить пользователями кластера с помощью API HDInsight, имеющими роли Owner, Contributor или Reader Azure, поскольку они были доступны каждому, у кого есть разрешение */read. Секреты определяются как значения, которые могут использоваться для получения уровня доступа выше, чем позволяет роль пользователя, например, учетные данные HTTP шлюза кластера, ключи учетных записей хранения и учетные данные баз данных.
Начиная с 3 сентября 2019 г. доступ к этим секретам потребует Microsoft.HDInsight/clusters/configurations/action разрешения, пользователь не может получить доступ к нему с ролью читателя. Роли, имеющие это разрешение, — это "Участник", "Владелец" и новая роль "Оператор кластера HDInsight".
Мы также вводим новую роль оператора кластера HDInsight, который может получать конфиденциальные данные без необходимости в административных разрешениях уровня участника или владельца. Подведение итогов.
| Должность | Ранее | Идти вперед |
|---|---|---|
| Читатель | — доступ на чтение, включая конфиденциальные данные. | — доступ на чтение, за исключением секретов |
| Оператор кластера HDInsight (Новая роль) |
Не применимо | — доступ на чтение и запись, включая секреты |
| Вкладчик | — доступ на чтение и запись, включая секреты. — Создание и управление всеми типами ресурсов Azure. — Выполнение действий скрипта. |
Нет изменений |
| Владелец | — доступ на чтение и запись, включая секреты. - Полный доступ ко всем ресурсам — делегировать доступ другим пользователям. — Выполнение действий скрипта. |
Нет изменений |
Сведения о том, как добавить назначение роли оператора кластера HDInsight пользователю, чтобы предоставить ему доступ на чтение и запись к секретам кластера, см. в разделе "Добавление назначения роли оператора кластера HDInsight" пользователю.
Узнайте, затронуты ли ваши сущности или сценарии.
Затронуты следующие сущности и сценарии:
-
API: пользователи, использующие конечные точки
/configurationsили/configurations/{configurationName}. - Средства Azure HDInsight для Visual Studio Code версии 1.1.1 или ниже.
- Набор средств Azure для IntelliJ версии 3.20.0 или ниже.
- Средства Azure Data Lake и Stream Analytics для Visual Studio версии 2.3.9000.1.
- Набор средств Azure для Eclipse версии 3.15.0 или ниже.
-
Пакет SDK для .NET
-
версии 1.x или 2.x: пользователи, использующие методы
GetClusterConfigurations,GetConnectivitySettings,ConfigureHttpSettings,EnableHttpилиDisableHttpиз класса ConfigurationsOperationsExtensions. -
версии 3.x и выше: пользователи, использующие
Get,Update,EnableHttp, илиDisableHttpметоды изConfigurationsOperationsExtensionsкласса.
-
версии 1.x или 2.x: пользователи, использующие методы
-
SDK для Python: пользователи, использующие методы
getилиupdateиз классаConfigurationsOperations. -
Пакет SDK для Java: пользователи, использующие методы
updateилиgetиз классаConfigurationsInner. -
Пакет SDK для Go: пользователи, использующие
GetилиUpdateметоды изConfigurationsClientструктуры. - Az.HDInsight PowerShell версии 2.0.0 . Ознакомьтесь со следующими разделами (или используйте приведенные выше ссылки), чтобы просмотреть шаги миграции для вашего сценария.
API (Интерфейс программирования приложений)
Следующие API изменены или устарели.
-
GET /configurations/{configurationName} (удалена конфиденциальная информация)
- Ранее использовался для получения отдельных типов конфигурации (включая секреты).
- Начиная с 3 сентября 2019 г. вызов API теперь возвращает отдельные типы конфигурации с секретами, опущенными. Чтобы получить все конфигурации, включая секреты, используйте новый вызов POST /configurations. Чтобы получить только параметры шлюза, используйте новый вызов POST /getGatewaySettings.
-
GET /configurations (не рекомендуется)
- Ранее использовался для получения всех конфигураций (включая секреты)
- По состоянию на 3 сентября 2019 г. этот вызов API устарел и больше не поддерживается. Чтобы получить все конфигурации в будущем, используйте новый вызов POST /configurations. Чтобы получить конфигурации с пропущенными конфиденциальными параметрами, используйте вызов GET /configurations/{configurationName}.
-
POST /configurations/{configurationName} (не рекомендуется)
- Ранее использовался для обновления учетных данных шлюза.
- По состоянию на 3 сентября 2019 г. этот вызов API устарел и больше не поддерживается. Вместо этого используйте новые POST /updateGatewaySettings.
Добавлены следующие api замены:
-
POST /конфигурации
- Используйте этот API для получения всех конфигураций, включая секреты.
-
POST /getGatewaySettings
- Используйте этот API для получения параметров шлюза.
-
POST /updateGatewaySettings
- Используйте этот API для обновления параметров шлюза (имя пользователя и/или пароль).
Средства Azure HDInsight для Visual Studio Code
Если вы используете версию 1.1.1 или ниже, обновите последнюю версию средств Azure HDInsight для Visual Studio Code , чтобы избежать прерываний.
Набор средств Azure для IntelliJ
Если вы используете версию 3.20.0 или ниже, обновите до новейшей версии подключаемого модуля Azure Toolkit для IntelliJ, чтобы избежать прерываний.
Средства Azure Data Lake и Stream Analytics для Visual Studio
Обновление до версии 2.3.9000.1 или более поздней версии средств Azure Data Lake и Stream Analytics для Visual Studio , чтобы избежать прерываний. Для получения справки по обновлению см. нашу документацию, Обновление средств Data Lake для Visual Studio.
Набор средств Azure для Eclipse
Если вы используете версию 3.15.0 или ниже, обновите до последней версии набора средств Azure для Eclipse , чтобы избежать прерываний.
Пакет SDK для .NET
Версии 1.x и 2.x
Обновление до версии 2.1.0 пакета SDK HDInsight для .NET. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:
ClusterOperationsExtensions.GetClusterConfigurationsбольше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
ClusterOperationsExtensions.ListConfigurationsв дальнейшем. Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера. - Чтобы получить только учетные данные шлюза HTTP, используйте
ClusterOperationsExtensions.GetGatewaySettings.
- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
ClusterOperationsExtensions.GetConnectivitySettingsне рекомендуется и заменяетсяClusterOperationsExtensions.GetGatewaySettings.ClusterOperationsExtensions.ConfigureHttpSettingsне рекомендуется и заменяетсяClusterOperationsExtensions.UpdateGatewaySettings.ConfigurationsOperationsExtensions.EnableHttpиDisableHttpне рекомендуется. HTTP всегда включен, поэтому эти методы больше не нужны.
Версии 3.x и вверх
Обновление до версии 5.0.0 или более поздней версии пакета SDK HDInsight для .NET. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:
-
ConfigurationOperationsExtensions.Getбольше не будут возвращать конфиденциальные параметры, такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
ConfigurationOperationsExtensions.Listв дальнейшем. Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера. - Чтобы получить только учетные данные шлюза HTTP, используйте
ClusterOperationsExtensions.GetGatewaySettings.
- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
-
ConfigurationsOperationsExtensions.Updateне рекомендуется и заменяетсяClusterOperationsExtensions.UpdateGatewaySettings. -
ConfigurationsOperationsExtensions.EnableHttpиDisableHttpне рекомендуется. HTTP всегда включен, поэтому эти методы больше не нужны.
Пакет SDK для Python
Обновление до версии 1.0.0 или более поздней версии пакета SDK HDInsight для Python. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:
-
ConfigurationsOperations.getбольше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
ConfigurationsOperations.listв дальнейшем. Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера. - Чтобы получить только учетные данные шлюза HTTP, используйте
ClusterOperations.get_gateway_settings.
- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
-
ConfigurationsOperations.updateне рекомендуется и заменяетсяClusterOperations.update_gateway_settings.
Пакет SDK для Java
Обновление до версии 1.0.0 или более поздней версии пакета SDK HDInsight для Java. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:
-
ConfigurationsInner.getбольше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз). -
ConfigurationsInner.updateне рекомендуется к использованию.
Пакет SDK для Go
Обновление до версии 27.1.0 или более поздней версии пакета SDK HDInsight для Go. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:
-
ConfigurationsClient.getбольше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
ConfigurationsClient.listв дальнейшем. Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера. - Чтобы получить только учетные данные шлюза HTTP, используйте
ClustersClient.get_gateway_settings.
- Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте
-
ConfigurationsClient.updateне рекомендуется и заменяетсяClustersClient.update_gateway_settings.
Az.HDInsight PowerShell
Обновите до Az PowerShell версии 2.0.0 или более поздней, чтобы избежать прерываний. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями.
-
Grant-AzHDInsightHttpServicesAccessустарел и заменен новымSet-AzHDInsightGatewayCredentialкомандлетом. -
Get-AzHDInsightJobOutputобновлено для поддержки детального доступа на основе ролей к ключу хранилища.- Пользователи с ролями Оператор, Участник или Владелец кластера HDInsight не затрагиваются.
- Пользователям с ролью только для чтения необходимо указать параметр
DefaultStorageAccountKeyявно.
-
Revoke-AzHDInsightHttpServicesAccessне рекомендуется к использованию. HTTP всегда включен, поэтому этот командлет больше не нужен. См. руководство по миграции HDInsight для получения подробностей.
Добавление назначения роли оператора кластера HDInsight пользователю
Пользователь с ролью владельца может назначить роль оператора кластера HDInsight пользователям, которым требуется доступ на чтение и запись к конфиденциальным значениям конфигурации кластера HDInsight (например, учетным данным шлюза кластера и ключам учетной записи хранения).
Использование Azure CLI
Самый простой способ добавить это назначение ролей — использовать az role assignment create команду в Azure CLI.
Примечание.
Эта команда должна выполняться пользователем с ролью владельца, так как только они могут предоставить эти разрешения. Имя --assignee субъекта-службы или адреса электронной почты пользователя, которому требуется назначить роль оператора кластера HDInsight. Если вы получаете ошибку из-за недостатка прав доступа, см. часто задаваемые вопросы.
Предоставление роли на уровне ресурса (кластера)
az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>
Предоставление роли на уровне группы ресурсов
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>
Назначить роль на уровне подписки
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com
Использование портала Azure
Можно также использовать портал Azure для добавления назначения роли оператора кластера HDInsight пользователю. См. документацию по назначению ролей Azure с помощью портала Azure.
Вопросы и ответы
Почему я вижу ответ 403 (запрещено) после обновления запросов API и /или средства?
Конфигурации кластеров теперь защищены подробным контролем доступа на основе ролей и требуют разрешения Microsoft.HDInsight/clusters/configurations/* для доступа к ним. Чтобы получить это разрешение, назначьте роль оператора кластера HDInsight, участника или владельца пользователю или служебному принципалу, которому требуется доступ к конфигурациям.
Почему при выполнении команды Azure CLI отображается "Недостаточно привилегий для выполнения операции", чтобы назначить роль оператора кластера HDInsight другому пользователю или субъекту-службе?
Помимо роли владельца, пользователь или служебный принципал, выполняющий команду, должен иметь достаточные разрешения Microsoft Entra для поиска идентификаторов объектов назначаемого лица. Это сообщение указывает на недостаточно разрешений Microsoft Entra. Попробуйте заменить аргумент -–assignee на –assignee-object-id и указать ID объекта адресата в качестве параметра вместо имени (или идентификатор субъекта в случае управляемой идентичности). Дополнительные сведения см. в разделе о необязательных параметрах в документации по созданию назначений ролей az.
Если он по-прежнему не работает, обратитесь к администратору Microsoft Entra, чтобы получить правильные разрешения.
Что произойдет, если я не принимаю никаких действий?
Начиная с 3 сентября 2019 г., вызовы GET /configurations и POST /configurations/gateway больше не возвращают никакой информации, а вызов GET /configurations/{configurationName} больше не возвращает конфиденциальные параметры, такие как ключи учетной записи хранения или пароль кластера. То же самое касается соответствующих методов SDK и командлетов PowerShell.
Если вы используете более старую версию одного из инструментов для Visual Studio, VS Code, IntelliJ или Eclipse, он больше не работает до обновления.
Дополнительные сведения см. в соответствующем разделе этого документа для вашего сценария.