Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Платформа Azure Service Fabric помогает защищать приложения, работающие в кластере под разными учетными записями. По умолчанию приложения Service Fabric выполняются под учетной записью, используемой процессом Fabric.exe. Service Fabric также предоставляет возможность запуска приложений в локальной учетной записи пользователя или системы. Поддерживаемые типы учетных записей локальной системы: LocalUser, NetworkService, LocalService и LocalSystem. Если вы используете Service Fabric в автономном кластере Windows, вы можете запустить службу под учетными записями домена Active Directory или групповыми управляемыми учетными записями служб.
В манифесте приложения вы определяете учетные записи пользователей, необходимые для запуска служб или безопасных ресурсов в разделе "Субъекты ". Вы также можете определить и создать группы пользователей, чтобы один или несколько пользователей могли управляться вместе. Это полезно при наличии нескольких пользователей для разных точек входа службы, и они нуждаются в общих привилегиях, доступных на уровне группы. Затем пользователи упоминаются в политике "RunAs", которая применяется к определенной службе или ко всем службам в приложении.
По умолчанию политика RunAs применяется к главной точке входа. Вы также можете применить политику RunAs к точке входа установки, если необходимо выполнить определенные операции установки с высоким уровнем привилегий в системной учетной записи, или к обеим точкам входа — основной и установки.
Примечание.
Если вы применяете политику RunAs к службе, а манифест службы объявляет ресурсы конечных точек с протоколом HTTP, необходимо указать SecurityAccessPolicy. Дополнительные сведения см. в статье "Назначение политики доступа к безопасности для конечных точек HTTP и HTTPS".
Запуск службы как локального пользователя
Вы можете создать локального пользователя, который можно использовать для защиты службы в приложении. Если тип учетной записи LocalUser указан в разделе субъектов манифеста приложения, Service Fabric создает локальные учетные записи пользователей на компьютерах, где развертывается приложение. По умолчанию эти учетные записи не имеют тех же имен, что и в манифесте приложения (например, Customer3 в следующем примере манифеста приложения). Вместо этого они динамически создаются и имеют случайные пароли.
В разделе RunAsPolicy для ServiceManifestImport укажите учетную запись пользователя из раздела «Принципы», чтобы запустить пакет кода службы. В следующем примере показано, как создать локального пользователя и применить политику RunAs к главной точке входа:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="Application7Type" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="Web1_InstanceCount" DefaultValue="-1" />
</Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Web1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<RunAsPolicy CodePackageRef="Code" UserRef="Customer3" EntryPointType="Main" />
</Policies>
</ServiceManifestImport>
<DefaultServices>
<Service Name="Web1" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="Web1Type" InstanceCount="[Web1_InstanceCount]">
<SingletonPartition />
</StatelessService>
</Service>
</DefaultServices>
<Principals>
<Users>
<User Name="Customer3" />
</Users>
</Principals>
</ApplicationManifest>
Создание локальной группы пользователей
Вы можете создать группы пользователей и добавить одного или нескольких пользователей в группу. Это полезно, если для разных точек входа службы существует несколько пользователей, и им необходимо иметь определенные общие привилегии, доступные на уровне группы. В следующем примере манифеста приложения показана локальная группа с именем LocalAdminGroup с правами администратора. Два пользователя, Customer1 и Customer2, являются членами этой локальной группы. В разделе ServiceManifestImport политика RunAs применяется для запуска пакета кода Stateful1Pkg как Customer2. Другая политика runAs применяется для запуска пакета кода Web1Pkg в качестве Customer1.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="Application7Type" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="Stateful1_MinReplicaSetSize" DefaultValue="3" />
<Parameter Name="Stateful1_PartitionCount" DefaultValue="1" />
<Parameter Name="Stateful1_TargetReplicaSetSize" DefaultValue="3" />
<Parameter Name="Web1_InstanceCount" DefaultValue="-1" />
</Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateful1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<RunAsPolicy CodePackageRef="Code" UserRef="Customer2" EntryPointType="Main"/>
</Policies>
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Web1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<RunAsPolicy CodePackageRef="Code" UserRef="Customer1" EntryPointType="Main"/>
</Policies>
</ServiceManifestImport>
<DefaultServices>
<Service Name="Stateful1" ServicePackageActivationMode="ExclusiveProcess">
<StatefulService ServiceTypeName="Stateful1Type" TargetReplicaSetSize="[Stateful1_TargetReplicaSetSize]" MinReplicaSetSize="[Stateful1_MinReplicaSetSize]">
<UniformInt64Partition PartitionCount="[Stateful1_PartitionCount]" LowKey="-9223372036854775808" HighKey="9223372036854775807" />
</StatefulService>
</Service>
<Service Name="Web1" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="Web1Type" InstanceCount="[Web1_InstanceCount]">
<SingletonPartition />
</StatelessService>
</Service>
</DefaultServices>
<Principals>
<Groups>
<Group Name="LocalAdminGroup">
<Membership>
<SystemGroup Name="Administrators" />
</Membership>
</Group>
</Groups>
<Users>
<User Name="Customer1">
<MemberOf>
<Group NameRef="LocalAdminGroup" />
</MemberOf>
</User>
<User Name="Customer2">
<MemberOf>
<Group NameRef="LocalAdminGroup" />
</MemberOf>
</User>
</Users>
</Principals>
</ApplicationManifest>
Применение политики по умолчанию ко всем пакетам кода службы
Вы используете раздел DefaultRunAsPolicy , чтобы указать учетную запись пользователя по умолчанию для всех пакетов кода, которые не имеют определенного определения RunAsPolicy . Если большинство пакетов кода, указанных в манифесте службы, используемых приложением, должны выполняться под одним пользователем, приложение может просто определить политику запуска по умолчанию с этой учетной записью пользователя. В следующем примере указывается, что если пакет кода не указан в RunAsPolicy , пакет кода должен выполняться под пользователем MyDefaultAccount , указанным в разделе субъектов. Поддерживаемые типы учетных записей: LocalUser, NetworkService, LocalSystem и LocalService. При использовании локального пользователя или службы также укажите имя учетной записи и пароль.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="Application7Type" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="Web1_InstanceCount" DefaultValue="-1" />
</Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Web1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
</ServiceManifestImport>
<DefaultServices>
<Service Name="Web1" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="Web1Type" InstanceCount="[Web1_InstanceCount]">
<SingletonPartition />
</StatelessService>
</Service>
</DefaultServices>
<Principals>
<Users>
<User Name="MyDefaultAccount" AccountType="NetworkService" />
</Users>
</Principals>
<Policies>
<DefaultRunAsPolicy UserRef="MyDefaultAccount" />
</Policies>
</ApplicationManifest>
Отладка пакета кода локально с помощью перенаправления консоли
Иногда это полезно для отладки, чтобы просмотреть выходные данные консоли из работающей службы. Политику перенаправления консоли можно задать в точке входа в манифесте службы, которая записывает выходные данные в файл. Выходные данные файла записываются в папку приложения, называемую журналом на узле кластера, где развертывается и выполняется приложение.
Предупреждение
Никогда не используйте политику перенаправления консоли в приложении, развернутом в рабочей среде, так как это может повлиять на отработку отказа приложения. Это используется только для локальных целей разработки и отладки.
В следующем примере манифеста службы показано включение перенаправления консоли со значением FileRetentionCount:
<CodePackage Name="Code" Version="1.0.0">
<EntryPoint>
<ExeHost>
<Program>VotingWeb.exe</Program>
<WorkingFolder>CodePackage</WorkingFolder>
<ConsoleRedirection FileRetentionCount="10"/>
</ExeHost>
</EntryPoint>
</CodePackage>