Общие сведения об управлении сертификатами в AKS с поддержкой Azure Arc

Область применения: AKS в Azure Stack HCI 22H2, AKS в Windows Server

AKS, активная Azure Arc, использует сочетание проверки подлинности на основе сертификатов и маркеров для защиты обмена данными между службами (или агентами), отвечающими за различные операции на платформе. Проверка подлинности на основе сертификата использует цифровой сертификат для идентификации сущности (агента, компьютера, пользователя или устройства) перед предоставлением доступа к ресурсу.

Облачный агент

При развертывании AKS с поддержкой Arc AKS устанавливает агенты, которые используются для выполнения различных функций в кластере. К этим агентам относятся следующие:

  • Облачный агент: служба, отвечающая за оркестрацию базовой платформы.
  • Агент узла: служба, расположенная на каждом узле, которая выполняет фактическую работу по созданию, удалению виртуальной машины и т. д.
  • Pod системы управления ключами (KMS): служба, ответственная за управление ключами.
  • Другие службы: оператор облака, диспетчер сертификатов и т. д.

Служба облачного агента в AKS отвечает за оркестрацию операций создания, чтения, обновления и удаления (CRUD) компонентов инфраструктуры, таких как Виртуальные машины (виртуальные машины), интерфейсы виртуальная сеть (VNIC) и виртуальные сети (VNET) в кластере.

Для взаимодействия с облачным агентом клиентам требуется подготовить сертификаты, чтобы защитить этот обмен данными. Каждый клиент требует, чтобы с ним было связано удостоверение, которое определяет правила контроль доступа на основе ролей (RBAC), связанные с клиентом. Каждое удостоверение состоит из двух сущностей:

  • Маркер, используемый для начальной проверки подлинности, который возвращает сертификат, и
  • Сертификат, полученный из приведенного выше процесса входа и используемый для проверки подлинности в любом обмене данными.

Каждая сущность действительна в течение определенного периода (по умолчанию — 90 дней), по истечении которого она истечет. Для дальнейшего доступа к облачному агенту каждый клиент требует продления сертификата и смены маркера.

Типы сертификатов

Существует два типа сертификатов, используемых в AKS, включенных Arc:

  • Сертификат ЦС облачного агента: сертификат, используемый для подписывания или проверки сертификатов клиента. Этот сертификат действителен 365 дней (один год).
  • Сертификаты клиента: сертификаты, выданные сертификатом ЦС облачного агента для проверки подлинности клиентов в облачном агенте. Обычно эти сертификаты действительны в течение 90 дней.

Корпорация Майкрософт рекомендует обновить кластеры в течение 60 дней после нового выпуска не только для обеспечения актуальности внутренних сертификатов и маркеров, но и для обеспечения доступа к новым функциям, исправлениям ошибок и обновлению критически важных исправлений для системы безопасности. Во время этих ежемесячных обновлений процесс обновления меняет все маркеры, которые не могут быть автоматически сменированы во время нормальной работы кластера. Срок действия сертификата и маркера сбрасывается до 90 дней по умолчанию с даты обновления кластера.

Безопасный обмен данными с помощью сертификатов в AKS, включенных Arc

Сертификаты используются для создания безопасного обмена данными между компонентами в кластере. AKS обеспечивает готовую подготовку сертификатов и управление сертификатами для встроенных компонентов Kubernetes. Из этой статьи вы узнаете, как подготавливать сертификаты и управлять ими в AKS, включенных Arc.

Сертификаты и ЦС

AKS создает и использует следующие центры сертификации (ЦС) и сертификаты.

ЦС кластера

  • Сервер API имеет ЦС кластера, который подписывает сертификаты для односторонного обмена данными с сервера API с kubelet.
  • Каждый из них kubelet также создает запрос на подпись сертификата (CSR), подписанный центром сертификации кластера, для обмена данными с сервером kubelet API.
  • Хранилище значений ключей etcd имеет сертификат, подписанный ЦС кластера для обмена данными из etcd с сервером API.

etcd CA

Хранилище значений ключей etcd имеет ЦС 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 

Дальнейшие действия