Защита изолированного кластера под управлением Windows с помощью системы безопасности Windows

Чтобы предотвратить несанкционированный доступ к кластеру Service Fabric, его необходимо защитить. Безопасность особенно важна при выполнении в кластере производственных рабочих нагрузок. В этой статье описывается, как настроить безопасность обмена данными между узлами или между клиентом и узлом с помощью системы безопасности Windows и файла ClusterConfig.JSON. Описываемый процесс соответствует шагу по настройке безопасности из раздела Создание изолированного кластера под управлением Windows Server. Дополнительные сведения об использовании системы безопасности Windows в Service Fabric см. в статье Сценарии защиты кластера Service Fabric.

Примечание.

Выбирать способ защиты обмена данными между узлами следует внимательно, так как один способ защиты кластера невозможно будет сменить на другой. Чтобы изменить способ защиты, потребуется заново создать весь кластер.

Настройка безопасности Windows с помощью групповой управляемой учетной записи службы

gMSA считается предпочтительной моделью безопасности. В примере файла конфигурации ClusterConfig.gMSA.Windows.MultiMachine.JSON, скачанном с пакетом автономного кластера Microsoft.Azure.ServiceFabric.WindowsServer<.версия>.zip, содержится шаблон для настройки безопасности Windows с помощью групповой управляемой учетной записи службы:

"security": {
    "ClusterCredentialType": "Windows",
    "ServerCredentialType": "Windows",
    "WindowsIdentities": {  
        "ClustergMSAIdentity": "[gMSA Identity]",
        "ClusterSPN": "[Registered SPN for the gMSA account]",
        "ClientIdentities": [
            {
                "Identity": "domain\\username",
                "IsAdmin": true
            }
        ]
    }
}
Параметр конфигурации Description
ClusterCredentialType Задайте значение Windows, чтобы включить систему безопасности Windows для связи между узлами. 
ServerCredentialType Задайте значение Windows, чтобы включить систему безопасности Windows для связи между узлом и клиентом.
WindowsIdentities Содержит удостоверения кластера и клиента.
ClustergMSAIdentity Настраивает безопасность обмена данными между узлами. Групповая управляемая учетная запись службы. Формат: "mysfgmsa@mydomain".
ClusterSPN Зарегистрированное имя участника-службы для учетной записи gMSA
ClientIdentities Настраивает безопасность обмена данными между клиентами и узлами. Массив учетных записей клиентов.
Идентификация Добавьте пользователя домена "домен\имя_пользователя" для удостоверения клиента.
IsAdmin Задайте значение true, чтобы указать, что у пользователя домена есть клиентский доступ с правами администратора, или значение false, чтобы указать наличие клиентского доступа с правами пользователя.

Безопасный обмен данными между узлами можно настроить с помощью параметра ClustergMSAIdentity, когда Service Fabric необходимо использовать групповую управляемую учетную запись службы. Чтобы создать отношения доверия между узлами, им нужно сообщить друг о друге. Это можно сделать двумя разными способами: указав групповую управляемую учетную запись службы, которая включает все узлы в кластере, или указав группу компьютеров домена, которая включает все узлы в кластере. Настоятельно рекомендуем применять подход с использованием групповой управляемой учетной записи службы, в частности для больших кластеров (более 10 узлов) или для кластеров, размер которых может изменяться.
Кроме того, этот подход не требует создания группы домена, администраторам кластера которой были предоставлены права доступа для добавления и удаления участников. Эти учетные записи также можно использовать для автоматического управления паролями. Дополнительные сведения см. в статье Начало работы с групповыми управляемыми учетными записями служб.

Безопасность обмена данными между клиентом и узлом настраивается с помощью параметра ClientIdentities. Чтобы установить отношение доверия между клиентом и кластером, необходимо настроить кластер таким образом, чтобы ему были известны удостоверения клиентов, которым можно доверять. Это можно сделать двумя разными способами: указав пользователей группы домена или узла домена, которые могут подключаться. Service Fabric поддерживает два разных типа контроля доступа для клиентов, подключенных к кластеру Service Fabric: администраторский и пользовательский. Благодаря контролю доступа администратор кластера может ограничить доступ разных групп пользователей на выполнение определенных типов операций в кластере, повысив тем самым уровень безопасности кластера. Администраторы имеют полный доступ к возможностям управления (включая возможности чтения и записи). Пользователи по умолчанию имеют доступ только на чтение для управления (например, при работе с запросами) и возможность разрешения приложений и служб. Дополнительные сведения о ролях доступа см. в статье Контроль доступа на основе ролей для клиентов Service Fabric.

В следующем примере раздела security настраивается безопасность Windows с помощью групповой управляемой учетной записи службы и указывается, что компьютеры в группе ServiceFabric.clusterA.contoso.com — это часть кластера, а также что у CONTOSO\usera есть клиентский доступ с правами администратора:

"security": {
    "ClusterCredentialType": "Windows",
    "ServerCredentialType": "Windows",
    "WindowsIdentities": {
        "ClustergMSAIdentity" : "ServiceFabric.clusterA.contoso.com",
        "ClusterSPN" : "http/servicefabric/clusterA.contoso.com",
        "ClientIdentities": [{
            "Identity": "CONTOSO\\usera",
            "IsAdmin": true
        }]
    }
}

Настройка безопасности Windows с использованием группы компьютеров

Как описано выше, gMSA является предпочтительной, но поддерживается использование и этой модели безопасности. В примере файла конфигурации ClusterConfig.Windows.MultiMachine.JSON, скачанном с пакетом автономного кластера Microsoft.Azure.ServiceFabric.WindowsServer.<версия>.zip, содержится шаблон для настройки безопасности Windows. Безопасность Windows настраивается в разделе Properties .

"security": {
    "ClusterCredentialType": "Windows",
    "ServerCredentialType": "Windows",
    "WindowsIdentities": {
        "ClusterIdentity" : "[domain\machinegroup]",
        "ClientIdentities": [{
            "Identity": "[domain\username]",
            "IsAdmin": true
        }]
    }
}
Параметр конфигурации Description
ClusterCredentialType Задайте значение Windows, чтобы включить систему безопасности Windows для связи между узлами. 
ServerCredentialType Задайте значение Windows, чтобы включить систему безопасности Windows для связи между узлом и клиентом.
WindowsIdentities Содержит удостоверения кластера и клиента.
ClusterIdentity Используйте имя группы компьютеров "домен\группа_компьютеров", чтобы настроить защиту обмена данными между узлами.
ClientIdentities Настраивает безопасность обмена данными между клиентами и узлами. Массив учетных записей клиентов.
Идентификация Добавьте пользователя домена "домен\имя_пользователя" для удостоверения клиента.
IsAdmin Задайте значение true, чтобы указать, что у пользователя домена есть клиентский доступ с правами администратора, или значение false, чтобы указать наличие клиентского доступа с правами пользователя.

Безопасный обмен данными между узлами можно настроить с помощью параметра ClusterIdentity, если вы хотите использовать группу компьютеров в домене Active Directory. Дополнительные сведения см. в статье How to Create a Group in Active Directory (Как создать группу компьютеров в Active Directory).

Защиту обмена данными между клиентом и узлом можно настроить с помощью параметра ClientIdentities. Чтобы установить отношения доверия между клиентом и кластером, необходимо настроить кластер таким образом, чтобы ему были известны удостоверения клиентов, которым можно доверять. Установить отношения доверия можно двумя разными способами:

  • указать пользователей группы домена, которые могут подключаться;
  • указать пользователей узла домена, которые могут подключаться.

Service Fabric поддерживает два разных типа контроля доступа для клиентов, подключенных к кластеру Service Fabric: администраторский и пользовательский. Благодаря контролю доступа администратор кластера может ограничить доступ разных групп пользователей к операциям определенных типов в кластере, повысив тем самым уровень его безопасности. Администраторы имеют полный доступ к возможностям управления (включая возможности чтения и записи). Пользователи по умолчанию имеют доступ только на чтение для управления (например, при работе с запросами) и возможность разрешения приложений и служб.

В следующем примере раздела security настраивается система безопасности Windows и указывается, что компьютеры в ServiceFabric/clusterA.contoso.com — это часть кластера, а также что у CONTOSO\usera есть клиентский доступ с правами администратора.

"security": {
    "ClusterCredentialType": "Windows",
    "ServerCredentialType": "Windows",
    "WindowsIdentities": {
        "ClusterIdentity" : "ServiceFabric/clusterA.contoso.com",
        "ClientIdentities": [{
            "Identity": "CONTOSO\\usera",
            "IsAdmin": true
        }]
    }
},

Примечание.

Службу Service Fabric не нужно развертывать на контроллере домена. Убедитесь, что ClusterConfig.json не содержит IP-адрес контроллера домена, если вы используете группы компьютеров или группу управляемых учетных записей службы (gMSA).

Следующие шаги

После настройки безопасности Windows в файле ClusterConfig.JSON возобновите процесс создания кластера, который описан в разделе Создание кластера под управлением Windows Server и управление им.

Дополнительные сведения о защите обмена данными между узлами, между клиентом и узлом и об управлении доступом на основе ролей см. в статье Сценарии защиты кластера Service Fabric.

Примеры подключений с помощью PowerShell или FabricClient см. в статье Безопасное подключение к кластеру без AAD.