Обзор управления сертификатами в AKS с поддержкой Azure Arc
Область применения: AKS в Azure Stack HCI 22H2, AKS на Windows Server
AKS, включенный Azure Arc, использует сочетание проверки подлинности на основе сертификатов и маркеров для защиты обмена данными между службами (или агентами), ответственными за различные операции на платформе. Проверка подлинности на основе сертификатов использует цифровой сертификат для идентификации сущности (агента, компьютера, пользователя или устройства) перед предоставлением доступа к ресурсу.
Облачный агент
При развертывании AKS с поддержкой Arc AKS устанавливает агенты, используемые для выполнения различных функций в кластере. К этим агентам относятся следующие:
- Облачный агент: служба, которая отвечает за оркестрацию базовой платформы.
- Агент узла: служба, которая находится на каждом узле, который выполняет фактическую работу создания, удаления и т. д.
- Pod системы управления ключами (KMS) — служба, отвечающая за управление ключами.
- Другие службы: оператор облака, диспетчер сертификатов и т. д.
Служба облачного агента в AKS отвечает за оркестрацию операций создания, чтения, обновления и удаления (CRUD) компонентов инфраструктуры, таких как Виртуальные машины (виртуальные машины), интерфейсы виртуальная сеть (виртуальные машины) и виртуальная сеть (виртуальные сети) в кластере.
Для взаимодействия с облачным агентом клиенты требуют подготовки сертификатов для защиты этого взаимодействия. Каждому клиенту требуется связать с ним удостоверение, определяющее правила контроль доступа на основе ролей (RBAC), связанные с клиентом. Каждое удостоверение состоит из двух сущностей:
- Маркер, используемый для начальной проверки подлинности, который возвращает сертификат и
- Сертификат, полученный из приведенного выше процесса входа и используемый для проверки подлинности в любом взаимодействии.
Каждая сущность действительна для определенного периода (значение по умолчанию — 90 дней), в конце которого истекает срок действия. Для дальнейшего доступа к облачному агенту каждый клиент требует продления сертификата и смены маркера.
Типы сертификатов
Существует два типа сертификатов, используемых в AKS с поддержкой Arc:
- Сертификат ЦС облачного агента: сертификат, используемый для подписи и проверки сертификатов клиента. Этот сертификат действителен 365 дней (один год).
- Сертификаты клиента: сертификаты, выданные сертификатом ЦС агента облака для клиентов для проверки подлинности в облачном агенте. Эти сертификаты обычно действительны в течение 90 дней.
Корпорация Майкрософт рекомендует обновлять кластеры в течение 60 дней после нового выпуска, не только для обеспечения актуальности внутренних сертификатов и маркеров, но и для обеспечения доступа к новым функциям, исправлениям ошибок и обновлению критически важных исправлений безопасности. Во время этих ежемесячных обновлений процесс обновления сменяет все маркеры, которые нельзя повернуть автоматически во время обычных операций кластера. Срок действия сертификата и маркера сбрасывается до 90 дней по умолчанию с даты обновления кластера.
Безопасное взаимодействие с сертификатами в AKS с поддержкой Arc
Сертификаты используются для создания безопасного взаимодействия между компонентами в кластере. AKS обеспечивает нулевую подготовку, подготовку и управление сертификатами для встроенных компонентов Kubernetes. В этой статье вы узнаете, как подготовить сертификаты и управлять ими в AKS, включенных Arc.
Сертификаты и центры сертификации
AKS создает и использует следующие центры сертификации (ЦС) и сертификаты.
ЦС кластера
- Сервер API имеет ЦС кластера, который подписывает сертификаты для односторонняя связь с сервера API с
kubelet
сервера API. - Каждый
kubelet
также создает запрос на подпись сертификата (CSR), подписанный ЦС кластера для связи сkubelet
сервером API. - Хранилище значений и т. д. имеет сертификат, подписанный ЦС кластера для обмена данными с сервера API и т. д.
ЦС etcd
Хранилище значений и т. д. имеет ЦС и т. д., который подписывает сертификаты для проверки подлинности и авторизации репликации данных между репликами etcd в кластере.
ЦС переднего прокси-сервера
ЦС переднего прокси-сервера обеспечивает связь между сервером API и сервером API расширения.
Подготовка сертификата
Подготовка сертификатов для нее выполняется с помощью начальной kubelet
загрузки TLS. Для всех остальных сертификатов используйте ключ и создание сертификата на основе YAML.
- Сертификаты хранятся в файле /etc/kubernetes/pki.
- Ключи — RSA 4096, EcdsaCurve: P384
Примечание.
Корневые сертификаты действительны в течение 10 лет. Все остальные, не являющиеся корневыми сертификатами, являются короткими и действительными в течение четырех дней.
Продление сертификатов и управление ими
Сертификаты, не являющиеся корневыми, автоматически обновляются. Все сертификаты уровня управления для Kubernetes, кроме следующих сертификатов, управляются:
- Сертификат сервера Kubelet
- Сертификат клиента Kubeconfig
Рекомендуется использовать единый вход Active Directory для проверки подлинности пользователей.
Отзыв сертификатов
Отзыв сертификата должен быть редким, и он должен выполняться во время продления сертификата.
Получив серийный номер сертификата, который вы хотите отозвать, используйте настраиваемый ресурс Kubernetes для определения и сохранения сведений о отзывах. Каждый объект отзыва может состоять из одного или нескольких записей отзыва.
Чтобы выполнить отзыв, используйте одно из следующих действий:
- Серийный номер
- Групповой
- DNS-имя
- IP-адрес
notBefore
Можно указать время, чтобы отозвать только сертификаты, выданные до определенной метки времени. notBefore
Если время не указано, все существующие и будущие сертификаты, соответствующие отзыву, будут отменены.
Примечание.
Отзыв kubelet
сертификатов сервера в настоящее время недоступен.
Если при выполнении отзыва используется серийный номер, можно использовать Repair-AksHciClusterCerts
команду PowerShell, описанную ниже, чтобы получить кластер в рабочее состояние. Если вы используете любой из других полей, перечисленных ранее, обязательно укажите notBefore
время.
apiVersion: certificates.microsoft.com/v1
kind: RenewRevocation
metadata:
name: my-renew-revocation
namespace: kube-system
spec:
description: My list of renew revocations
revocations:
- description: Revoked certificates by serial number
kind: serialnumber
notBefore: "2020-04-17T17:22:05Z"
serialNumber: 77fdf4b1033b387aaace6ce1c18710c2
- description: Revoked certificates by group
group: system:nodes
kind: Group
- description: Revoked certificates by DNS
dns: kubernetes.default.svc.
kind: DNS
- description: Revoked certificates by DNS Suffix
dns: .cluster.local
kind: DNS
- description: Revoked certificates by IP
ip: 170.63.128.124
kind: IP