Kör en tjänst som ett lokalt användarkonto eller ett lokalt systemkonto
Genom att använda Azure Service Fabric kan du skydda program som körs i klustret under olika användarkonton. Som standard körs Service Fabric-program under det konto som Fabric.exe processen körs under. Service Fabric ger också möjlighet att köra program under ett lokalt användar- eller systemkonto. Lokala systemkontotyper som stöds är LocalUser, NetworkService, LocalService och LocalSystem. Om du kör Service Fabric i ett fristående Windows-kluster kan du köra en tjänst under Active Directory-domänkonton eller grupphanterade tjänstkonton.
I programmanifestet definierar du de användarkonton som krävs för att köra tjänster eller säkra resurser i avsnittet Huvudnamn . Du kan också definiera och skapa användargrupper så att en eller flera användare kan hanteras tillsammans. Detta är användbart när det finns flera användare för olika startpunkter för tjänsten och de behöver vanliga behörigheter som är tillgängliga på gruppnivå. Användarna refereras sedan till i en RunAs-princip som tillämpas på en specifik tjänst eller alla tjänster i programmet.
Som standard tillämpas RunAs-principen på huvudstartpunkten. Du kan också tillämpa en RunAs-princip på startpunkten för installationen, om du behöver köra vissa konfigurationsåtgärder med hög behörighet under ett systemkonto eller både huvud- och installationsinmatningspunkter.
Kommentar
Om du tillämpar en RunAs-princip på en tjänst och tjänstmanifestet deklarerar slutpunktsresurser med HTTP-protokollet måste du ange en SecurityAccessPolicy. Mer information finns i Tilldela en säkerhetsåtkomstprincip för HTTP- och HTTPS-slutpunkter.
Köra en tjänst som en lokal användare
Du kan skapa en lokal användare som kan användas för att skydda en tjänst i programmet. När en LocalUser-kontotyp anges i avsnittet huvudnamn i programmanifestet skapar Service Fabric lokala användarkonton på datorer där programmet distribueras. Som standard har dessa konton inte samma namn som de som anges i programmanifestet (till exempel Customer3 i följande exempel på programmanifestet). I stället genereras de dynamiskt och har slumpmässiga lösenord.
I avsnittet RunAsPolicy för en ServiceManifestImport anger du användarkontot från avsnittet Huvudnamn för att köra tjänstkodpaketet. I följande exempel visas hur du skapar en lokal användare och tillämpar en RunAs-princip på huvudstartpunkten:
<?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>
Skapa en lokal användargrupp
Du kan skapa användargrupper och lägga till en eller flera användare i gruppen. Detta är användbart om det finns flera användare för olika startpunkter för tjänsten och de måste ha vissa vanliga privilegier som är tillgängliga på gruppnivå. I följande exempel på programmanifest visas en lokal grupp med namnet LocalAdminGroup som har administratörsbehörighet. Två användare, Customer1 och Customer2, är medlemmar i den här lokala gruppen. I avsnittet ServiceManifestImport tillämpas en RunAs-princip för att köra kodpaketet Stateful1Pkg som Kund2. En annan RunAs-princip tillämpas för att köra Web1Pkg-kodpaketet som Kund1.
<?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>
Tillämpa en standardprincip på alla tjänstkodpaket
Du använder avsnittet DefaultRunAsPolicy för att ange ett standardanvändarkonto för alla kodpaket som inte har definierat en specifik RunAsPolicy . Om de flesta kodpaket som anges i tjänstmanifestet som används av ett program måste köras under samma användare, kan programmet bara definiera en standardprincip för RunAs med det användarkontot. I följande exempel anges att om ett kodpaket inte har angett någon RunAsPolicy ska kodpaketet köras under den MyDefaultAccount-användare som anges i avsnittet huvudnamn. Kontotyper som stöds är LocalUser, NetworkService, LocalSystem och LocalService. Om du använder en lokal användare eller tjänst anger du även kontonamnet och lösenordet.
<?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>
Felsöka ett kodpaket lokalt med hjälp av konsolomdirigering
Ibland är det användbart för felsökningsändamål att se konsolens utdata från en tjänst som körs. Du kan ange en omdirigeringsprincip för konsolen på startpunkten i tjänstmanifestet, som skriver utdata till en fil. Filutdata skrivs till programmappen med namnet logga in på klusternoden där programmet distribueras och körs.
Varning
Använd aldrig omdirigeringsprincipen för konsolen i ett program som distribueras i produktion eftersom detta kan påverka programredundansen. Använd endast detta för lokal utveckling och felsökning.
I följande exempel på tjänstmanifestet visas aktivering av omdirigering av konsolen med värdet FileRetentionCount:
<CodePackage Name="Code" Version="1.0.0">
<EntryPoint>
<ExeHost>
<Program>VotingWeb.exe</Program>
<WorkingFolder>CodePackage</WorkingFolder>
<ConsoleRedirection FileRetentionCount="10"/>
</ExeHost>
</EntryPoint>
</CodePackage>