Использование Azure RBAC в кластерах Kubernetes с поддержкой Azure Arc (предварительная версия)
Типы объектов ClusterRoleBinding и RoleBinding в Kubernetes помогают определить собственную авторизацию в Kubernetes. С помощью этой функции можно использовать идентификатор и назначения ролей Microsoft Entra в Azure для управления авторизацией проверка в кластере. Назначения ролей Azure позволяют детально контролировать, какие пользователи могут читать, записывать и удалять объекты Kubernetes, такие как развертывание, pod и служба.
Общие сведения об этой функции см. в статье Azure RBAC в Kubernetes с поддержкой Azure Arc.
Важно!
Предварительные версии функций Kubernetes с поддержкой Azure Arc доступны в режиме самообслуживания после получения согласия на участие. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии функций Kubernetes с поддержкой Azure Arc предоставляются с частичной клиентской поддержкой по мере возможности.
Необходимые компоненты
Установите или обновите Azure CLI до последней версии.
Установите последнюю версию
connectedk8s
расширения Azure CLI:az extension add --name connectedk8s
Если расширение
connectedk8s
уже установлено, его можно обновить до последней версии, выполнив следующую команду.az extension update --name connectedk8s
Подключитесь к существующему кластеру Kubernetes с поддержкой Azure Arc:
- Если вы еще не подключились к кластеру, воспользуйтесь этим кратким руководством.
- Обновите агенты до последней версии.
Примечание.
Эту функцию нельзя настроить для Red Hat OpenShift или для управляемых предложений Kubernetes облачных поставщиков, таких как служба Elastic Kubernetes или Google Kubernetes Engine, где пользователь не имеет доступа к серверу API кластера. Для кластеров Службы Azure Kubernetes (AKS) эта функция доступна изначально и не требует подключения кластера AKS к Azure Arc.
Настройка приложений Microsoft Entra
Создание серверного приложения
Создайте приложение Microsoft Entra и получите его
appId
значение. Это значение будет использоваться в дальнейших шагах какserverApplicationId
.CLUSTER_NAME="<name-of-arc-connected-cluster>" TENANT_ID="<tenant>" SERVER_UNIQUE_SUFFIX="<identifier_suffix>" SERVER_APP_ID=$(az ad app create --display-name "${CLUSTER_NAME}Server" --identifier-uris "api://${TENANT_ID}/${SERVER_UNIQUE_SUFFIX}" --query appId -o tsv) echo $SERVER_APP_ID
Чтобы предоставить разрешения API "Вход и чтение профиля пользователя" для серверного приложения, скопируйте этот код JSON и сохраните его в файле с именем oauth2-permissions.json:
{ "oauth2PermissionScopes": [ { "adminConsentDescription": "Sign in and read user profile", "adminConsentDisplayName": "Sign in and read user profile", "id": "<paste_the_SERVER_APP_ID>", "isEnabled": true, "type": "User", "userConsentDescription": "Sign in and read user profile", "userConsentDisplayName": "Sign in and read user profile", "value": "User.Read" } ] }
Обновите утверждения о членстве в группах приложения. Выполните команды в том же каталоге, что
oauth2-permissions.json
и файл. RBAC для Kubernetes с поддержкой Azure Arc необходимо задать для AzureADMyOrg:signInAudience
az ad app update --id "${SERVER_APP_ID}" --set groupMembershipClaims=All az ad app update --id ${SERVER_APP_ID} --set api=@oauth2-permissions.json az ad app update --id ${SERVER_APP_ID} --set signInAudience=AzureADMyOrg SERVER_OBJECT_ID=$(az ad app show --id "${SERVER_APP_ID}" --query "id" -o tsv) az rest --method PATCH --headers "Content-Type=application/json" --uri https://graph.microsoft.com/v1.0/applications/${SERVER_OBJECT_ID}/ --body '{"api":{"requestedAccessTokenVersion": 1}}'
Создайте субъект-службу и получите значение его поля
password
. Это значение потребуется позднее в качествеserverApplicationSecret
при включении этой функции в кластере. Этот секрет действителен в течение одного года по умолчанию и должен быть повернут после этого. Чтобы задать настраиваемую длительность срока действия, используйтеaz ad sp credential reset
:az ad sp create --id "${SERVER_APP_ID}" SERVER_APP_SECRET=$(az ad sp credential reset --id "${SERVER_APP_ID}" --query password -o tsv)
Предоставьте разрешения API "Вход и чтение профиля пользователя" приложению с помощью
az ad app permission
:az ad app permission add --id "${SERVER_APP_ID}" --api 00000003-0000-0000-c000-000000000000 --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope az ad app permission grant --id "${SERVER_APP_ID}" --api 00000003-0000-0000-c000-000000000000 --scope User.Read
Примечание.
Администратор приложения Azure должен выполнить этот шаг.
Для использования этой функции в рабочей среде рекомендуется создать отдельное серверное приложение для каждого кластера.
Создание клиентского приложения
Создайте приложение Microsoft Entra и получите его
appId
значение. Это значение будет использоваться в дальнейших шагах какclientApplicationId
.CLIENT_UNIQUE_SUFFIX="<identifier_suffix>" CLIENT_APP_ID=$(az ad app create --display-name "${CLUSTER_NAME}Client" --is-fallback-public-client --public-client-redirect-uris "api://${TENANT_ID}/${CLIENT_UNIQUE_SUFFIX}" --query appId -o tsv) echo $CLIENT_APP_ID
Создайте субъект-службу для этого клиентского приложения.
az ad sp create --id "${CLIENT_APP_ID}"
Получите значение
oAuthPermissionId
для серверного приложения.az ad app show --id "${SERVER_APP_ID}" --query "api.oauth2PermissionScopes[0].id" -o tsv
Предоставьте необходимые разрешения для клиентского приложения. RBAC для Kubernetes с поддержкой Azure Arc необходимо задать для AzureADMyOrg:
signInAudience
az ad app permission add --id "${CLIENT_APP_ID}" --api "${SERVER_APP_ID}" --api-permissions <oAuthPermissionId>=Scope RESOURCE_APP_ID=$(az ad app show --id "${CLIENT_APP_ID}" --query "requiredResourceAccess[0].resourceAppId" -o tsv) az ad app permission grant --id "${CLIENT_APP_ID}" --api "${RESOURCE_APP_ID}" --scope User.Read az ad app update --id ${CLIENT_APP_ID} --set signInAudience=AzureADMyOrg CLIENT_OBJECT_ID=$(az ad app show --id "${CLIENT_APP_ID}" --query "id" -o tsv) az rest --method PATCH --headers "Content-Type=application/json" --uri https://graph.microsoft.com/v1.0/applications/${CLIENT_OBJECT_ID}/ --body '{"api":{"requestedAccessTokenVersion": 1}}'
Создание назначения роли для серверного приложения
Серверное приложение должно иметь Microsoft.Authorization/*/read
разрешения, чтобы убедиться, что пользователь, выполняющий запрос, авторизован на объекты Kubernetes, включенные в запрос.
Создайте файл с именем accessCheck.json и со следующим содержимым.
{ "Name": "Read authorization", "IsCustom": true, "Description": "Read authorization", "Actions": ["Microsoft.Authorization/*/read"], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/<subscription-id>" ] }
Замените
<subscription-id>
фактическим идентификатором подписки.Выполните следующую команду, чтобы создать новую настраиваемую роль.
ROLE_ID=$(az role definition create --role-definition ./accessCheck.json --query id -o tsv)
Создайте назначение роли для серверного приложения как
assignee
, используя созданную роль.az role assignment create --role "${ROLE_ID}" --assignee "${SERVER_APP_ID}" --scope /subscriptions/<subscription-id>
Включение Azure RBAC в кластере
Включите управление доступом на основе ролей Azure (RBAC) в кластере Kubernetes с поддержкой Azure Arc, выполнив следующую команду:
az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features azure-rbac --app-id "${SERVER_APP_ID}" --app-secret "${SERVER_APP_SECRET}"
Примечание.
Перед выполнением предыдущей команды убедитесь, что файл kubeconfig
на компьютере указывает на кластер, в котором вы включаете функцию Azure RBAC.
Используйте --skip-azure-rbac-list
с предыдущей командой для указания списка разделенных запятыми имен пользователей, адресов электронной почты и подключений OpenID, которые подлежат проверкам авторизации с использованием собственных объектов Kubernetes ClusterRoleBinding
и RoleBinding
вместо Azure RBAC.
Универсальный кластер, в котором не выполняется примиратель в спецификации apiserver
Подключитесь по протоколу SSH к каждому главному узлу кластера и выполните следующие действия.
Если используется
kube-apiserver
статический модуль pod:Секрет
azure-arc-guard-manifests
вkube-system
пространстве имен содержит два файла:guard-authn-webhook.yaml
иguard-authz-webhook.yaml
. Скопируйте эти файлы в/etc/guard
каталог узла.sudo mkdir -p /etc/guard kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authn-webhook.yaml"' | base64 -d > /etc/guard/guard-authn-webhook.yaml kubectl get secrets azure-arc-guard-manifests -n kube-system -o json | jq -r '.data."guard-authz-webhook.yaml"' | base64 -d > /etc/guard/guard-authz-webhook.yaml
Откройте манифест
apiserver
в режиме правки.sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
Добавьте следующую спецификацию в раздел
volumes
.- name: azure-rbac hostPath: path: /etc/guard type: Directory
Добавьте следующую спецификацию в раздел
volumeMounts
.- mountPath: /etc/guard name: azure-rbac readOnly: true
Если вы
kube-apiserver
не является статическим модулем pod:Откройте манифест
apiserver
в режиме правки.sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
Добавьте следующую спецификацию в раздел
volumes
.- name: azure-rbac secret: secretName: azure-arc-guard-manifests
Добавьте следующую спецификацию в раздел
volumeMounts
.- mountPath: /etc/guard name: azure-rbac readOnly: true
Добавьте следующие аргументы
apiserver
.- --authentication-token-webhook-config-file=/etc/guard/guard-authn-webhook.yaml - --authentication-token-webhook-cache-ttl=5m0s - --authorization-webhook-cache-authorized-ttl=5m0s - --authorization-webhook-config-file=/etc/guard/guard-authz-webhook.yaml - --authorization-webhook-version=v1 - --authorization-mode=Node,RBAC,Webhook
Если кластер Kubernetes имеет версию не ниже 1.19.0, необходимо также задать следующий аргумент
apiserver
.- --authentication-token-webhook-version=v1
Сохраните изменения и закройте редактор, чтобы обновить pod
apiserver
.
Кластер, созданный с помощью API кластера
Скопируйте секрет условия, содержащий файлы конфигурации веб-перехватчика проверки подлинности и авторизации, из кластера рабочей нагрузки на свой компьютер.
kubectl get secret azure-arc-guard-manifests -n kube-system -o yaml > azure-arc-guard-manifests.yaml
Измените поле
namespace
в файле azure-arc-guard-manifests.yaml на пространство имен в кластере управления, где вы применяете настраиваемые ресурсы для создания кластеров рабочей нагрузки.Примените этот манифест.
kubectl apply -f azure-arc-guard-manifests.yaml
Измените объект
KubeadmControlPlane
, выполнивkubectl edit kcp <clustername>-control-plane
.Добавьте в раздел
files
следующий фрагмент кода.- contentFrom: secret: key: guard-authn-webhook.yaml name: azure-arc-guard-manifests owner: root:root path: /etc/kubernetes/guard-authn-webhook.yaml permissions: "0644" - contentFrom: secret: key: guard-authz-webhook.yaml name: azure-arc-guard-manifests owner: root:root path: /etc/kubernetes/guard-authz-webhook.yaml permissions: "0644"
Добавьте в раздел
apiServer
>extraVolumes
следующий фрагмент кода.- hostPath: /etc/kubernetes/guard-authn-webhook.yaml mountPath: /etc/guard/guard-authn-webhook.yaml name: guard-authn readOnly: true - hostPath: /etc/kubernetes/guard-authz-webhook.yaml mountPath: /etc/guard/guard-authz-webhook.yaml name: guard-authz readOnly: true
Добавьте в раздел
apiServer
>extraArgs
следующий фрагмент кода.authentication-token-webhook-cache-ttl: 5m0s authentication-token-webhook-config-file: /etc/guard/guard-authn-webhook.yaml authentication-token-webhook-version: v1 authorization-mode: Node,RBAC,Webhook authorization-webhook-cache-authorized-ttl: 5m0s authorization-webhook-config-file: /etc/guard/guard-authz-webhook.yaml authorization-webhook-version: v1
Сохраните изменения и закройте объект
KubeadmControlPlane
, чтобы обновить его. Дождитесь появления этих изменений в кластере рабочей нагрузки.
Создание назначений ролей для доступа пользователей к кластеру
Владельцы ресурса Kubernetes с поддержкой Azure Arc могут использовать встроенные роли или пользовательские роли для предоставления другим пользователям доступа к кластеру Kubernetes.
Встроенные роли
Роль | Description |
---|---|
Зритель Kubernetes Azure Arc | Разрешает доступ только для чтения, позволяя просматривать большинство объектов в пространстве имен. Эта роль не позволяет просматривать секреты, так как read разрешение на секреты позволит получить доступ к ServiceAccount учетным данным в пространстве имен. В свою очередь, эти учетные данные позволят доступ к API через это значение ServiceAccount (форма повышения привилегий). |
Писатель Kubernetes Azure Arc | Разрешает доступ для чтения и записи к большинству объектов в пространстве имен. Эта роль не позволяет просматривать или изменять роли или привязки ролей. Однако эта роль позволяет получать доступ к секретам и запускать pod в качестве любого ServiceAccount значения в пространстве имен, поэтому его можно использовать для получения уровней доступа API любого ServiceAccount значения в пространстве имен. |
Администратор Kubernetes Azure Arc | Разрешает административный доступ. Эта роль предназначена для предоставления в пространстве имен через RoleBinding . Если вы используете ее в RoleBinding , она разрешает доступ на чтение и запись к большинству ресурсов в пространстве имен, включая возможность создания ролей и привязки ролей в пространстве имен. Эта роль не разрешает доступ на запись к квоте ресурса или пространству имен. |
Администратор кластера Kubernetes Azure Arc | Позволяет суперпользователю выполнять любые действия с любым ресурсом. При использовании этой роли в ClusterRoleBinding она предоставляет полный контроль над каждым ресурсом в кластере и во всех пространствах имен. При использовании этой роли в RoleBinding она предоставляет полный контроль над каждым ресурсом в пространстве имен привязки роли, включая само пространство имен. |
Вы можете создать назначения ролей область в кластер Kubernetes с поддержкой Azure Arc в портал Azure на панели контроль доступа (IAM) ресурса кластера. Вы также можете использовать следующие команды Azure CLI.
az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID
В этих командах AZURE-AD-ENTITY-ID
может быть именем пользователя (например, testuser@mytenant.onmicrosoft.com
) или даже значением appId
субъекта-службы.
Ниже приведен еще один пример создания назначения роли в области определенного пространства имен в кластере.
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>
Примечание.
Вы можете создавать назначения ролей, область область в кластере, с помощью портал Azure или Azure CLI. Однако для создания назначений ролей область в пространствах имен можно использовать только Azure CLI.
Пользовательские роли
Вы можете создать собственное определение роли для использования в назначениях ролей.
Рассмотрим следующий пример определения роли, которая разрешает пользователю только чтение развертываний. Дополнительные сведения см. в полном списке действий с данными, которые можно использовать для создания определения роли.
Скопируйте следующий объект JSON в файл с именем custom-role.json. Замените заполнитель <subscription-id>
фактическим идентификатором подписки. Настраиваемая роль использует одно из действий с данными и позволяет просматривать все развертывания в области (кластере или пространстве имен), в которой создается назначение роли.
{
"Name": "Arc Deployment Viewer",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<subscription-id>"
]
}
Создайте определение роли, выполнив следующую команду из папки, в которую сохранен файл custom-role.json.
az role definition create --role-definition @custom-role.json
Создайте назначение роли с помощью этого определения настраиваемой роли.
az role assignment create --role "Arc Deployment Viewer" --assignee <AZURE-AD-ENTITY-ID> --scope $ARM_ID/namespaces/<namespace-name>
Настройка kubectl с учетными данными пользователя
Существует два способа получить файл kubeconfig, необходимый для доступа к кластеру.
- Вы используете функцию Подключение кластера (
az connectedk8s proxy
) кластера Kubernetes с поддержкой Azure Arc. - Администратор кластера предоставляет общий доступ к файлу kubeconfig всем пользователям.
Использование подключения к кластеру
введите следующую команду, чтобы начать процесс прокси-сервера.
az connectedk8s proxy -n <clusterName> -g <resourceGroupName>
После запуска процесса прокси-сервера можно открыть другую вкладку в консоли, чтобы начать отправку запросов в кластер.
Использование общего файла kubeconfig
Использование общей kubeconfig требует немного разных шагов в зависимости от версии Kubernetes.
Выполните следующую команду, чтобы задать учетные данные пользователя.
kubectl config set-credentials <testuser>@<mytenant.onmicrosoft.com> \ --auth-provider=azure \ --auth-provider-arg=environment=AzurePublicCloud \ --auth-provider-arg=client-id=<clientApplicationId> \ --auth-provider-arg=tenant-id=<tenantId> \ --auth-provider-arg=apiserver-id=<serverApplicationId>
Откройте созданный ранее файл kubeconfig. В разделе
contexts
убедитесь, что контекст, связанный с кластером, указывает на учетные данные пользователя, созданные на предыдущем шаге. Чтобы задать текущий контекст для этих учетных данных пользователя, выполните следующую команду:kubectl config set-context --current=true --user=<testuser>@<mytenant.onmicrosoft.com>
Добавьте параметр config-mode в раздел
user
>config
.name: testuser@mytenant.onmicrosoft.com user: auth-provider: config: apiserver-id: $SERVER_APP_ID client-id: $CLIENT_APP_ID environment: AzurePublicCloud tenant-id: $TENANT_ID config-mode: "1" name: azure
Примечание.
Подключаемый модуль Exec — это стратегия проверки подлинности Kubernetes, которая позволяет kubectl
выполнить внешнюю команду для получения учетных данных пользователя для отправки apiserver
. Начиная с Kubernetes версии 1.26 подключаемый модуль авторизации Azure по умолчанию больше не включен client-go
и kubectl
. В более поздних версиях, чтобы использовать подключаемый модуль exec для получения учетных данных пользователя, необходимо использовать Azure Kubelogin, client-go
подключаемый модуль учетных данных (exec), реализующий проверку подлинности Azure.
Установите Azure Kubelogin:
Для Windows или Mac следуйте инструкциям по установке Azure Kubelogin.
Для Linux или Ubuntu скачайте последнюю версию kubelogin, а затем выполните следующие команды:
curl -LO https://github.com/Azure/kubelogin/releases/download/"$KUBELOGIN_VERSION"/kubelogin-linux-amd64.zip unzip kubelogin-linux-amd64.zip sudo mv bin/linux_amd64/kubelogin /usr/local/bin/ sudo chmod +x /usr/local/bin/kubelogin
Преобразуйте kubelogin, чтобы использовать соответствующий режим входа. Например, для входа кода устройства с пользователем Microsoft Entra команды будут следующим образом:
export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
Отправка запросов в кластер
Выполните любую команду
kubectl
. Например:kubectl get nodes
kubectl get pods
После запроса проверки подлинности на основе браузера скопируйте URL-адрес входа устройства (
https://microsoft.com/devicelogin
) и откройте его в веб-браузере.Введите код, выведенный на вашей консоли. Скопируйте код и вставьте его в окно терминала в ответ на запрос проверки подлинности устройства.
Введите имя пользователя (
testuser@mytenant.onmicrosoft.com
) и соответствующий пароль.Если появляется сообщение об ошибке, аналогичное приведенному ниже, это означает, что вы не можете получить доступ к запрошенному ресурсу.
Error from server (Forbidden): nodes is forbidden: User "testuser@mytenant.onmicrosoft.com" cannot list resource "nodes" in API group "" at the cluster scope: User doesn't have access to the resource in Azure. Update role assignment to allow access.
Администратору необходимо создать новое назначение роли, которое разрешает этому пользователю доступ к ресурсу.
Использование условного доступа с идентификатором Microsoft Entra
При интеграции идентификатора Microsoft Entra с кластером Kubernetes с поддержкой Azure Arc можно также использовать условный доступ для управления доступом к кластеру.
Примечание.
Условный доступ Microsoft Entra — это возможность Microsoft Entra ID P2.
Чтобы создать пример политики условного доступа для использования с кластером:
В верхней части портал Azure найдите и выберите идентификатор Microsoft Entra.
В меню для идентификатора Microsoft Entra в левой части выберите корпоративные приложения.
В меню для корпоративных приложений слева выберите Условный доступ.
В меню для условного доступа слева выберите Политики>Создать политику.
Введите имя политики, например arc-k8s-policy.
Выберите Пользователи и группы В разделе Включить нажмите Выбрать пользователей и группы. Затем выберите пользователей и группы, для которых хотите применить политику. В этом примере выберите ту же группу Microsoft Entra, которая имеет административный доступ к кластеру.
Выберите Облачные приложения или действия. В списке Включить нажмите Выбрать приложения. Затем найдите и выберите созданное ранее серверное приложение.
В разделе Элементы управления доступом выберите Предоставление. Выберите Предоставить доступ>Require device to be marked as compliant (Требовать, чтобы устройство было отмечено как соответствующее).
В разделе Включить политику нажмите Вкл.>Создать.
Снова откройте кластер. Например, выполните команду kubectl get nodes
, чтобы просмотреть узлы в кластере.
kubectl get nodes
Снова выполните инструкции для входа. Сообщение об ошибке указывает, что вы успешно вошли в систему, но администратору требуется устройство, запрашивающее доступ к идентификатору Microsoft Entra ID, чтобы получить доступ к ресурсу. Выполните следующие действия:
В портал Azure перейдите к идентификатору Microsoft Entra.
Выберите Корпоративные приложения. Затем в разделе Действие выберите Входы.
В записи вверху отображается Failed (Сбой) для состояния и Success (Успешно) для условного доступа. Щелкните эту запись, а затем в области Сведения выберите Условный доступ. Обратите внимание, что в списке указана ваша политика условного доступа.
Настройка JIT-доступа к кластеру с помощью идентификатора Microsoft Entra
Другим вариантом управления доступом кластера является использование управление привилегированными пользователями (PIM) для JIT-запросов.
Примечание.
Microsoft Entra PIM — это возможность Microsoft Entra ID P2. Дополнительные сведения об номерах SKU идентификаторов Microsoft Entra см. в руководстве по ценам.
Чтобы настроить запросы с JIT-доступом к кластеру, выполните следующие действия.
В верхней части портал Azure найдите и выберите идентификатор Microsoft Entra.
Запишите идентификатор клиента. В остальных инструкциях мы будем ссылаться на этот идентификатор как на
<tenant-id>
.В меню идентификатора Microsoft Entra в левой части в разделе "Управление" выберите группы>"Создать группу".
Убедитесь, что для типа группы выбран параметр Безопасность. Введите имя группы, например myJITGroup. В разделе ролей Microsoft Entra можно назначить этой группе (предварительная версия), нажмите кнопку "Да". Наконец, выберите Создать.
Снова откроется страница Группы. Выберите только что созданную группу и запишите ее идентификатор объекта. В остальных инструкциях мы будем ссылаться на этот идентификатор как на
<object-id>
.Вернитесь на портал Azure и в меню для действий слева выберите Привилегированный доступ (предварительная версия). Затем нажмите Включить привилегированный доступ.
Нажмите Добавить назначения, чтобы приступить к предоставлению доступа.
Выберите роль члена, а затем выберите пользователей и группы, которым вы хотите предоставить доступ к кластеру. Администратор группы может изменить эти назначения в любое время. Когда вы будете готовы продолжить, нажмите кнопку Далее.
Выберите тип назначения Active (Активно), желаемую длительность и укажите обоснование. Когда все будет готово, нажмите кнопку Назначить. Дополнительные сведения о типах назначений см. в разделе Назначение соответствия для группы привилегированного доступа (предварительная версия) в Privileged Identity Management.
После выполнения назначений попробуйте получить доступ к кластеру, чтобы убедиться, что JIT-доступ работает. Например, выполните команду kubectl get nodes
, чтобы просмотреть узлы в кластере.
kubectl get nodes
Обратите внимание на требование проверки подлинности и выполните необходимые действия для проверки подлинности. Если проверка подлинности выполнена успешно, вы увидите выходные данные, аналогичные следующему:
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
NAME STATUS ROLES AGE VERSION
node-1 Ready agent 6m36s v1.18.14
node-2 Ready agent 6m42s v1.18.14
node-3 Ready agent 6m33s v1.18.14
Обновление секрета серверного приложения
Если срок действия секрета для субъекта-службы сервера истек, необходимо повернуть его.
SERVER_APP_SECRET=$(az ad sp credential reset --name "${SERVER_APP_ID}" --credential-description "ArcSecret" --query password -o tsv)
Обновите секрет в кластере. Включите все необязательные параметры, настроенные при первоначальном выполнении команды.
az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features azure-rbac --app-id "${SERVER_APP_ID}" --app-secret "${SERVER_APP_SECRET}"
Следующие шаги
- Безопасное подключение к кластеру с помощью функции подключения к кластеру.
- Ознакомьтесь с архитектурой Azure RBAC в Kubernetes с поддержкой Arc.