Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products

Funkcja Bezpieczne hasło modułu Dell Command PowerShell Provider

Summary: Funkcja Bezpieczne hasło modułu Dell Command | PowerShell Provider (DCPP), ConvertTo-SecureString, ConvertFrom-SecureString

This article applies to   This article does not apply to 

Instructions

Dotyczy produktów:

  • Aplikacja Dell Command | PowerShell Provider

Koncepcja bezpiecznych haseł polega na tym, że w skryptach produkcyjnych nie powinniśmy przekazywać ważnych haseł w widoczny sposób. Jest to poważny brak zabezpieczenia. Zatem za pomocą PowerShell możemy zabezpieczyć hasło lub przynajmniej zmniejszyć jego widoczność. Najpierw omówimy ogólne aspekty bezpiecznego ciągu, a następnie sposób, w jaki Dell Command PowerShell Provider (DCPP) wykorzystuje wrodzoną funkcję PowerShell do zabezpieczania hasła.

Powiedzmy, że chcemy odczytać nazwę użytkownika i hasło użytkownika w konsoli. Wiemy, że nazwa użytkownika na ogół nie wymaga żadnych zabezpieczeń i może być widoczna dla wszystkich. Nie powinniśmy natomiast ujawniać nieznajomym hasła użytkownika. Spełnienie tego wymagania możemy ułatwić za pomocą poniższych poleceń:

$user = Read-Host "Enter Username"

$pass = Read-Host "Enter Password" -AsSecureString

Powyżej przedstawiono sposoby zwiększenia bezpieczeństwa, gdy konieczne jest zabezpieczenie krytycznych informacji, takich jak hasło. W powyższym przykładzie zmienna $pass jest typu System.Security.SecureString. Zapoznamy się z wprowadzeniem do dwóch innych powszechnie używanych poleceń cmdlet programu PowerShell, które ułatwiają bezpieczne pola, zanim przejdziemy do aspektów DCPP.

Te dwa polecenia to ConvertTo-SecureString i ConvertFrom-SecureString. ConvertTo-SecureString konwertuje zwykły tekst na typ System.Security.SecureString. Poniżej przedstawiono przykład:

"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force

W powyższym przykładzie zwykły tekst P@assword1 jest konwertowany na typ System.Security.SecureString. Jest to jedynie informacja, która może, ale nie musi być powszechnie stosowana.

Następne polecenie cmdlet ConvertFrom-SecureString jest szerzej używanym poleceniem cmdlet, które służy do konwertowania bezpiecznych ciągów na zaszyfrowane ciągi standardowe. Główne ograniczenie ConvertTo-SecureString jest takie, że jego dane wyjściowe nie mogą być bezpośrednio zapisane w pliku do wykorzystania w przyszłości. Musimy użyć ConvertFrom-SecureString które konwertuje System.Security.SecureString na zaszyfrowany standardowy ciąg, który można wygodnie zapisać w pliku, aby pokonać to ograniczenie.

Konwertujemy zwykły tekst P@ssword1 aby zabezpieczyć ciąg, a następnie przesłać jego dane wyjściowe do ConvertFrom-SecureString aby uzyskać zaszyfrowany ciąg znaków, który można bezpiecznie i wygodnie zapisać w pliku.

Załóżmy na przykład, że na komputerze ustawiono hasło administratora i musimy zapisać je w pliku. Możemy to zrobić za pomocą:

Read-Host "Enter Admin Password" -AsSecureString |
ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"

Możemy odzyskać to hasło administratora do zmiennej jako bezpieczny obiekt w następujący sposób:

$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString

Zastanówmy się teraz, jak wykorzystać bezpieczne hasło dla DCPP. W DCPP, jeśli komputer użytkownika ma ustawione hasło systemowe lub hasło administratora, dla wszystkich set poleceń musimy przekazać odpowiednie hasło. Zatem podanie tego hasła w postaci zwykłego tekstu powoduje naruszenie zabezpieczeń. Musimy przekazać hasło jako System.Security.SecureString. Ponadto gdy przekazujemy SecureString hasło, musimy je przekazać za pomocą -PasswordSecure przełącznika, ale nie normalnego –Password przełącznika. Poniżej pokazano przykład, w którym użytkownik próbuje ustawić AdvancedBatteryChargeCfg na Disabled i przekazuje SecureString hasło:

Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass

W tym miejscu $pass przechowuje hasło systemowe i hasło administratora oraz jest typu System.Security.SecureString. Podobnie jak w powyższym omówieniu możemy odczytać $pass jako:

$pass = Read-Host "Enter system/admin password" –AsSecureString

Możemy zapisać $pass w pliku, jeśli jest to wymagane, jako:

$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt

Additional Information

Affected Products

Dell Command | Powershell Provider