Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Feljegyzés
A cikkben tárgyalt felhasználói fiókok biztonsági okokból eltérnek a Távoli asztali protokollhoz (RDP) vagy a Secure Shellhez (SSH) használt felhasználói fiókoktól.
Ha SSH-n keresztül szeretne csatlakozni egy Linux rendszerű virtuálisgép-konfigurációt futtató csomóponthoz, olvassa el az xrdp telepítése és konfigurálása a Távoli asztal Ubuntuval való használatához című témakört. Ha RDP-n keresztül szeretne csatlakozni a Windowst futtató csomópontokhoz, olvassa el a Windowst futtató Azure-beli virtuális gépekhez való csatlakozást és bejelentkezést ismertető témakört.
Az Azure Batchben lévő feladatok mindig felhasználói fiók alatt futnak. A feladatok alapértelmezés szerint rendszergazdai engedélyek nélkül, standard felhasználói fiókokban futnak. Bizonyos esetekben érdemes konfigurálni azt a felhasználói fiókot, amely alatt futtatni szeretné a feladatot. Ez a cikk ismerteti a felhasználói fiókok típusait és azok konfigurálását az Ön forgatókönyvéhez.
Felhasználói fiókok típusai
Az Azure Batch kétféle felhasználói fiókot biztosít a feladatok futtatásához:
Automatikus felhasználói fiókok. Az automatikus felhasználói fiókok olyan beépített felhasználói fiókok, amelyeket a Batch szolgáltatás automatikusan hoz létre. Alapértelmezés szerint a feladatok automatikus felhasználói fiók alatt futnak. A tevékenységek automatikus felhasználói specifikációját úgy konfigurálhatja, hogy jelezze, melyik automatikus felhasználói fiókban kell futtatnia egy feladatot. Az automatikus felhasználói specifikáció lehetővé teszi a feladatot futtató automatikus felhasználói fiók jogosultságszintjének és hatókörének megadását.
Névvel ellátott felhasználói fiók. A készlet létrehozásakor megadhat egy vagy több elnevezett felhasználói fiókot egy készlethez. Minden felhasználói fiók a készlet minden csomópontján létrejön. A fióknév mellett meg kell adnia a felhasználói fiók jelszavát, a jogosultságszintszintet és a Linux-készletek esetében az SSH titkos kulcsát. Feladat hozzáadásakor megadhatja azt a elnevezett felhasználói fiókot, amely alatt a feladatnak futnia kell.
Fontos
A Batch szolgáltatás 2017-01-01.4.0-s verziója olyan kompatibilitástörő változást vezetett be, amely megköveteli, hogy frissítse a kódot az adott verzió vagy újabb verzió meghívásához. A Batch-kód régebbi verzióról való frissítésével kapcsolatos rövid útmutatókért tekintse meg a Kód frissítése a Legújabb Batch-ügyfélkódtárra című témakört.
Felhasználói fiók hozzáférése fájlokhoz és könyvtárakhoz
Az automatikus felhasználói fiók és a nevesített felhasználói fiók egyaránt olvasási/írási hozzáféréssel rendelkezik a tevékenység munkakönyvtárához, megosztott könyvtárához és többpéldányos tevékenységkönyvtárához. Mindkét típusú felhasználói fiók olvasási hozzáféréssel rendelkezik az indítási és feladat-előkészítési könyvtárakhoz.
Ha egy tevékenység ugyanabban a fiókban fut, mint amelyet egy indítási tevékenység futtatásához használtak, a tevékenység írás-olvasási hozzáféréssel rendelkezik a kezdő tevékenység könyvtárához. Hasonlóképpen, ha egy tevékenység ugyanabban a fiókban fut, amely egy feladat-előkészítési tevékenység futtatásához volt használva, a tevékenység olvasási-írási hozzáféréssel rendelkezik a feladat-előkészítési tevékenység könyvtárához. Ha egy tevékenység a kezdési vagy a feladat-előkészítési tevékenységétől eltérő fiókban fut, akkor a tevékenység csak olvasási hozzáféréssel rendelkezik a megfelelő könyvtárhoz.
Fontos
A Batch különböző tevékenységfelhasználói nem elegendő biztonsági határt alkotnak a tevékenységek és a kapcsolódó tevékenységadatok elkülönítéséhez. A Batch rendszerben a biztonsági elkülönítés határa a fürt szintjén van. A Batch API nem megfelelő hozzáférés-vezérlése azonban a Batch-fiók összes készletének megfelelő engedélyekkel való elérését eredményezheti. Tekintse meg a medencebiztonságra vonatkozó ajánlott eljárásokat.
A fájlok és könyvtárak feladatból való eléréséről további információt a Fájlok és könyvtárak című témakörben talál.
Emelt szintű hozzáférés a tevékenységekhez
A felhasználói fiók jogosultságszintje azt jelzi, hogy egy tevékenység emelt szintű hozzáféréssel fut-e. Az automatikus felhasználói fiók és a névvel ellátott felhasználói fiók is rendszergazdai hozzáféréssel futtatható. A szintszint két lehetősége a következő:
- NonAdmin: A feladat normál felhasználóként fut emelt szintű hozzáférés nélkül. A Batch felhasználói fiókok alapértelmezett emelési szintje mindig NonAdmin.
- Rendszergazda: A feladat rendszergazdai jogosultsággal rendelkező felhasználóként fut, és teljes rendszergazdai engedélyekkel működik.
Automatikus felhasználói fiókok
A feladatok alapértelmezés szerint a Batchben automatikus felhasználói fiók alatt futnak, normál, rendszergazdai hozzáféréssel nem rendelkező felhasználóként és készlet hatókörrel. A készlet hatóköre azt jelenti, hogy a tevékenység egy automatikus felhasználói fiók alatt fut, amely a készlet bármely tevékenységéhez elérhető. A készlet hatókörével kapcsolatos további információkért lásd: Feladat futtatása készlethatókörrel automatikus felhasználóként.
A készlet hatókörének alternatíva a tevékenység hatóköre. Ha az automatikus felhasználó specifikációja a tevékenység hatóköréhez van konfigurálva, a Batch szolgáltatás csak ehhez a tevékenységhez hoz létre automatikus felhasználói fiókot.
Az automatikus felhasználói specifikáció négy lehetséges konfigurációval rendelkezik, amelyek mindegyike egy egyedi automatikus felhasználói fióknak felel meg:
- Nem rendszergazdai hozzáférés tevékenységhatókörrel
- Rendszergazdai (emelt szintű) hozzáférés tevékenységhatókörrel
- Nem rendszergazdai hozzáférés az erőforráskészlet hatókörében
- Rendszergazdai hozzáférés készlet szintű hozzáféréssel
Feljegyzés
Az emelt rendszergazdai hozzáféréssel rendelkező automatikus felhasználói fiókok közvetlen írási hozzáféréssel rendelkeznek a feladatot végrehajtó számítási csomópont összes többi feladatkönyvtárához. Érdemes lehet a feladatokat a sikeres végrehajtáshoz szükséges minimális jogosultsággal futtatni.
Feladat futtatása emelt szintű hozzáféréssel rendelkező automatikus felhasználóként
A rendszergazdai jogosultságok automatikus felhasználói specifikációját konfigurálhatja, ha emelt szintű hozzáféréssel rendelkező feladatot kell futtatnia. Előfordulhat például, hogy egy indítási feladatnak emelt szintű hozzáférésre van szüksége a szoftver csomópontra való telepítéséhez.
Feljegyzés
Csak akkor használjon emelt szintű hozzáférést, ha szükséges. Az emelt szintű rendszergazdai hozzáférés használatának tipikus használati esete egy olyan indítási feladat, amely szoftvereket kell telepítenie a számítási csomópontra, mielőtt más tevékenységek ütemezhetők. A következő feladatokhoz a telepített szoftvert jogosultságszint-emelés nélküli feladatfelhasználóként kell használnia.
Az alábbi kódrészletek bemutatják az automatikus felhasználói specifikáció konfigurálását. Az példák a kiemelési szintet Admin, és a hatókört Task állítják be.
Batch .NET
task.UserIdentity = new UserIdentity()
{
AutoUser = new AutoUserSpecification()
{
ElevationLevel = ElevationLevel.Admin,
Scope = AutoUserScope.Task
}
};
Batch Java
taskToAdd.withId(taskId)
.withUserIdentity(new UserIdentity()
.withAutoUser(new AutoUserSpecification()
.withElevationLevel(ElevationLevel.ADMIN))
.withScope(AutoUserScope.TASK));
.withCommandLine("cmd /c echo hello");
Batch Python
user = models.UserIdentity(
auto_user=models.AutoUserSpecification(
elevation_level=models.ElevationLevel.ADMIN,
scope=models.AutoUserScope.TASK))
task = models.BatchTaskCreateOptions(
id='task_1',
command_line='cmd /c "echo hello world"',
user_identity=user)
batch_client.create_task(job_id=jobid, task=task)
Feladat futtatása automatikus felhasználóval, pool hatáskörrel
Amikor egy csomópont kiépítésre kerül, két készletszintű automatikus felhasználói fiókra kerül sor a készlet minden csomópontján, egy emelt szintű hozzáféréssel, egy pedig emelt szintű hozzáférés nélkül. Ha az automatikus felhasználó hatókörét egy adott feladathoz pool hatókörre állítja, a feladat a két pool-szintű automatikus felhasználói fiók valamelyike alatt fut.
Amikor megadja az automatikus felhasználó készlettartományát, a rendszergazdai hozzáféréssel futtatott összes feladat ugyanabban a készletszintű automatikus felhasználói fiókban fut. Hasonlóképpen, a rendszergazdai engedélyek nélkül futó feladatok is egyetlen készletszintű automatikus felhasználói fiókban futnak.
Az ugyanazon az automatikus felhasználói fiókon való futtatás előnye, hogy a feladatok egyszerűen megoszthatják az adatokat az ugyanazon a csomóponton futó más feladatokkal. A felhasználói fiókok újrafelhasználásának teljesítménybeli előnyei is vannak.
A feladatok közötti titkos kódok megosztása olyan forgatókönyv, amelyben a feladatok futtatása a két készletszintű automatikus felhasználói fiók egyikében hasznos. Tegyük fel például, hogy egy kezdő tevékenységnek titkos kulcsot kell kiépítenie a csomópontra, amelyet más tevékenységek használhatnak. Használhatja a Windows Data Protection API-t (DPAPI), de rendszergazdai jogosultságokat igényel. Ehelyett felhasználói szinten is megvédheti a titkos kulcsokat. Az ugyanazon a felhasználói fiókon futó feladatok emelt szintű hozzáférés nélkül férhetnek hozzá a titkos kódhoz.
Egy másik forgatókönyv, amikor automatikus felhasználói fiók alatt szeretne feladatokat futtatni készlet szintjén, az egy üzenetátadási felület (MPI) fájlmegosztása. Az MPI-fájlmegosztás akkor hasznos, ha az MPI-feladat csomópontjainak ugyanazon a fájladatokon kell dolgozniuk. A fő csomópont létrehoz egy fájlmegosztást, amelyhez a gyermekcsomópontok hozzáférhetnek, ha ugyanazon az automatikus felhasználói fiókon futnak.
Az alábbi kódrészlet beállítja az automatikus felhasználó hatókörét egy tevékenység hatókörének készletre a Batch .NET-ben. A jogosultságszint nincs megadva, ezért a tevékenység a standard készletszintű automatikus felhasználói fiók alatt fut.
task.UserIdentity = new UserIdentity()
{
AutoUser = new AutoUserSpecification()
{
Scope = AutoUserScope.Pool
}
};
Elnevezett felhasználói fiókok
Elnevezett felhasználói fiókokat definiálhat készlet létrehozásakor. Egy elnevezett felhasználói fióknak van egy ön által megadott neve és jelszava. Megadhatja egy elnevezett felhasználói fiók emelési szintjét. Linux-csomópontok esetén SSH titkos kulcsot is megadhat.
A névvel ellátott felhasználói fiók a készlet összes csomópontján megtalálható, és az ezeken a csomópontokon futó összes feladat számára elérhető. A készlethez tetszőleges számú elnevezett felhasználót definiálhat. Tevékenység vagy feladatgyűjtemény hozzáadásakor megadhatja, hogy a tevékenység a készletben definiált nevesített felhasználói fiókok egyikében fusson.
A névvel ellátott felhasználói fiókok akkor hasznosak, ha egy feladat összes feladatát ugyanabban a felhasználói fiókban szeretné futtatni, de el szeretné különíteni őket a más feladatokban egyidejűleg futó feladatoktól. Létrehozhat például egy elnevezett felhasználót minden feladathoz, és futtathatja az egyes feladatok feladatait az adott elnevezett felhasználói fiók alatt. Ezután minden munka megoszthat egy titkot a saját feladataival, de más munkákban futó feladatokkal nem.
Elnevezett felhasználói fiók használatával is futtathat olyan feladatot, amely engedélyeket állít be külső erőforrásokon, például fájlmegosztásokon. Egy elnevezett felhasználói fiókkal szabályozhatja a felhasználói identitást, és ezzel a felhasználói identitással állíthat be engedélyeket.
Az elnevezett felhasználói fiókok jelszó nélküli SSH-t tesznek lehetővé a Linux-csomópontok között. Egy elnevezett felhasználói fiókot többpéldányos feladatok futtatásához szükséges Linux-csomópontokkal is használhat. A készlet minden csomópontja futtathat feladatokat a teljes készletre vonatkozó felhasználói fiók alatt. A többpéldányos tevékenységekről további információt a Többpéldányos feladatok használata MPI-alkalmazások futtatásához című témakörben talál.
Elnevezett felhasználói fiókok létrehozása
Ha elnevezett felhasználói fiókokat szeretne létrehozni a Batchben, adjon hozzá felhasználói fiókok gyűjteményét a készlethez. Az alábbi kódrészletek bemutatják, hogyan hozhat létre elnevezett felhasználói fiókokat .NET-ben, Java-ban és Pythonban. Ezek a kódrészletek bemutatják, hogyan hozhat létre rendszergazdai és nem rendszergazdai nevű fiókokat egy készleten.
Batch .NET példa (Windows)
Console.WriteLine("Creating pool [{0}]...", poolId);
BatchAccountPoolData poolData = new BatchAccountPoolData()
{
VmSize = "standard_d2s_v3",
DeploymentConfiguration = new BatchDeploymentConfiguration()
{
VmConfiguration = new BatchVmConfiguration(
imageReference: new BatchImageReference()
{
Publisher = "MicrosoftWindowsServer",
Offer = "WindowsServer",
Sku = "2022-datacenter-core",
Version = "latest"
},
nodeAgentSkuId: "batch.node.windows amd64")
},
ScaleSettings = new BatchAccountPoolScaleSettings()
{
FixedScale = new BatchAccountFixedScaleSettings() { TargetDedicatedNodes = 2 }
},
UserAccounts =
{
new BatchUserAccount("adminUser", "A1bC2d") { ElevationLevel = BatchUserAccountElevationLevel.Admin },
new BatchUserAccount("nonAdminUser", "A1bC2d") { ElevationLevel = BatchUserAccountElevationLevel.NonAdmin },
}
};
await batchAccount.GetBatchAccountPools().CreateOrUpdateAsync(WaitUntil.Completed, poolId, poolData);
Batch .NET - példa (Linux)
// Obtain a collection of all available node agent SKUs.
List<BatchSupportedImage> images = new List<BatchSupportedImage>();
await foreach (BatchSupportedImage img in batchClient.GetSupportedImagesAsync())
{
images.Add(img);
}
// Define a delegate specifying properties of the VM image to use.
bool IsUbuntu2404(Azure.Compute.Batch.BatchVmImageReference imageRef) =>
imageRef.Publisher == "Canonical" &&
imageRef.Offer == "ubuntu-24_04-lts" &&
imageRef.Sku.Contains("server");
// Pick the first supported image that matches.
BatchSupportedImage ubuntuImage = null;
foreach (var img in images)
{
if (IsUbuntu2404(img.ImageReference)) { ubuntuImage = img; break; }
}
// Create the BatchVmConfiguration to use to create the pool.
BatchVmConfiguration vmConfiguration = new BatchVmConfiguration(
imageReference: new BatchImageReference()
{
Publisher = ubuntuImage.ImageReference.Publisher,
Offer = ubuntuImage.ImageReference.Offer,
Sku = ubuntuImage.ImageReference.Sku,
Version = ubuntuImage.ImageReference.Version
},
nodeAgentSkuId: ubuntuImage.NodeAgentSkuId);
Console.WriteLine("Creating pool [{0}]...", poolId);
BatchAccountPoolData poolData = new BatchAccountPoolData()
{
VmSize = "Standard_d2s_v3",
DeploymentConfiguration = new BatchDeploymentConfiguration() { VmConfiguration = vmConfiguration },
ScaleSettings = new BatchAccountPoolScaleSettings()
{
FixedScale = new BatchAccountFixedScaleSettings() { TargetDedicatedNodes = 2 }
},
UserAccounts =
{
new BatchUserAccount("adminUser", "A1bC2d")
{
ElevationLevel = BatchUserAccountElevationLevel.Admin,
LinuxUserConfiguration = new BatchLinuxUserConfiguration()
{
Uid = 12345,
Gid = 98765,
SshPrivateKey = Guid.NewGuid().ToString()
}
},
new BatchUserAccount("nonAdminUser", "A1bC2d")
{
ElevationLevel = BatchUserAccountElevationLevel.NonAdmin,
LinuxUserConfiguration = new BatchLinuxUserConfiguration()
{
Uid = 45678,
Gid = 98765,
SshPrivateKey = Guid.NewGuid().ToString()
}
},
}
};
await batchAccount.GetBatchAccountPools().CreateOrUpdateAsync(WaitUntil.Completed, poolId, poolData);
Java-batch példa
List<UserAccount> userList = new ArrayList<>();
userList.add(new UserAccount().withName(adminUserAccountName).withPassword(adminPassword).withElevationLevel(ElevationLevel.ADMIN));
userList.add(new UserAccount().withName(nonAdminUserAccountName).withPassword(nonAdminPassword).withElevationLevel(ElevationLevel.NONADMIN));
PoolAddParameter addParameter = new PoolAddParameter()
.withId(poolId)
.withTargetDedicatedNodes(POOL_VM_COUNT)
.withVmSize(POOL_VM_SIZE)
.withVirtualMachineConfiguration(configuration)
.withUserAccounts(userList);
batchClient.poolOperations().createPool(addParameter);
Kötet Python példa
users = [
models.UserAccount(
name='pool-admin',
password='A1bC2d',
elevation_level=models.ElevationLevel.ADMIN),
models.UserAccount(
name='pool-nonadmin',
password='A1bC2d',
elevation_level=models.ElevationLevel.NON_ADMIN),
]
pool = models.BatchPoolCreateOptions(
id=pool_id,
user_accounts=users,
virtual_machine_configuration=models.VirtualMachineConfiguration(
image_reference=image_ref_to_use,
node_agent_sku_id=sku_to_use),
vm_size=vm_size,
target_dedicated_nodes=vm_count)
batch_client.create_pool(pool=pool)
Feladat futtatása emelt szintű hozzáféréssel rendelkező elnevezett felhasználói fiók alatt
Ha rendszergazdai jogú felhasználóként szeretne futtatni egy feladatot, állítsa be a feladat UserIdentity tulajdonságát egy olyan elnevezett felhasználói fiókra, amely ElevationLevel tulajdonsággal lett létrehozva Admin.
Ez a kódrészlet azt határozza meg, hogy a feladat nevesített felhasználói fiók alatt fusson. Ez a névvel ellátott felhasználói fiók a készlet létrehozásakor lett definiálva a készleten. Ebben az esetben a névvel ellátott felhasználói fiók rendszergazdai engedélyekkel lett létrehozva:
BatchTaskCreateOptions task = new BatchTaskCreateOptions("1", "cmd.exe /c echo 1")
{
UserIdentity = new UserIdentity() { Username = AdminUserAccountName }
};
A kód frissítése a Batch legújabb ügyfélkódtárára
A Batch szolgáltatás 2017-01-01.4.0-s verziója kompatibilitástörő változást vezetett be, a korábbi verziókban elérhető runElevated tulajdonságot pedig a userIdentity tulajdonságra cserélte. Az alábbi táblázatok egyszerű leképezést biztosítanak, amellyel frissítheti a kódot az ügyfélkódtárak korábbi verzióiból.
Batch .NET
| Ha a kód... | Frissítse a...-ra. |
|---|---|
CloudTask.RunElevated = true; |
CloudTask.UserIdentity = new UserIdentity(new AutoUserSpecification(elevationLevel: ElevationLevel.Admin)); |
CloudTask.RunElevated = false; |
CloudTask.UserIdentity = new UserIdentity(new AutoUserSpecification(elevationLevel: ElevationLevel.NonAdmin)); |
CloudTask.RunElevated nincs megadva |
Nincs szükség frissítésre |
Batch Java
| Ha a kód... | Frissítse erre: ... |
|---|---|
CloudTask.withRunElevated(true); |
CloudTask.withUserIdentity(new UserIdentity().withAutoUser(new AutoUserSpecification().withElevationLevel(ElevationLevel.ADMIN)); |
CloudTask.withRunElevated(false); |
CloudTask.withUserIdentity(new UserIdentity().withAutoUser(new AutoUserSpecification().withElevationLevel(ElevationLevel.NONADMIN)); |
CloudTask.withRunElevated nincs megadva |
Nincs szükség frissítésre |
Batch Python
| Ha a kód... | Frissítse a...-ra. |
|---|---|
run_elevated=True |
user_identity=userhol user = batchmodels.UserIdentity(auto_user=batchmodels.AutoUserSpecification(elevation_level=batchmodels.ElevationLevel.admin)) |
run_elevated=False |
user_identity=userhol user = batchmodels.UserIdentity(auto_user=batchmodels.AutoUserSpecification(elevation_level=batchmodels.ElevationLevel.non_admin)) |
run_elevated nincs megadva |
Nincs szükség frissítésre |
Következő lépések
- Ismerje meg a Batch szolgáltatás munkafolyamatát és az elsődleges erőforrásokat , például készleteket, csomópontokat, feladatokat és feladatokat.
- Tudnivalók az Azure Batch fájljairól és könyvtárairól .