PS PowerShell  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Секреты и учётные данные

Секреты и учётные данные: практический тест по PowerShell с чтением кода, поиском причины ошибки и выбором надёжного решения. Темы: Защищённые строки SecureString, Учётные данные Credential, Хранилища секретов, Утечки в журналах, Диагностика: секреты, Безопасная эксплуатация: секреты. Базовая линия — PowerShell 7.6.3; Windows-зависимые команды и отличия Windows PowerShell 5.1 отмечены в условиях.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант; близкие ответы различаются механизмом, порядком выполнения, областью действия или эксплуатационной границей. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и подробные объяснения.
Вопрос 1 из 30
Read-Host -AsSecureString читает пароль. Как следует читать этот фрагмент?
PowerShellRead-Host -AsSecureString читает пароль
$secret=Read-Host "Secret" -AsSecureString
$valueType = if($null -eq $secret){'<null>'}else{$secret.GetType().FullName}
[pscustomobject]@{ Value=$secret; Type=$valueType; Count=@($secret).Count }
Вопрос 2 из 30
ConvertFrom-SecureString вызывается без ключа на Windows. Почему похожие команды дают разный контракт?
PowerShellConvertFrom-SecureString вызывается без ключа на Windows
$blob=$secret|ConvertFrom-SecureString
Set-Content .\secret.txt $blob
Вопрос 3 из 30
ConvertFrom-SecureString использует симметрический Key. Почему локальный успех ещё ничего не доказывает?
PowerShellConvertFrom-SecureString использует симметрический Key
$key=1..32
$blob=$secret|ConvertFrom-SecureString -Key $key
Вопрос 4 из 30
SecureString преобразуется в BSTR. Как поступить, чтобы поведение осталось предсказуемым?
Вопрос 5 из 30
Секрет передаётся внешней программе аргументом. Какое решение здесь надёжнее?
Вопрос 6 из 30
PSCredential содержит UserName и SecureString Password. На каком правиле основан результат?
PowerShellPSCredential содержит UserName и SecureString Password
$cred=Get-Credential
$cred | Select-Object UserName,@{n="PasswordType";e={$_.Password.GetType().Name}}
Вопрос 7 из 30
GetNetworkCredential().Password извлекает текст. Какое объяснение не зависит от случайностей окружения?
PowerShellGetNetworkCredential().Password извлекает текст
$plain=$cred.GetNetworkCredential().Password
$valueType = if($null -eq $plain){'<null>'}else{$plain.GetType().FullName}
[pscustomobject]@{ Value=$plain; Type=$valueType; Count=@($plain).Count }
Вопрос 8 из 30
Credential сериализуется в remoting. Какой вывод можно подтвердить?
PowerShellCredential сериализуется в remoting
$result = Invoke-Command server1 { param($c) $c.UserName } -ArgumentList $cred
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 9 из 30
Пустой PSCredential создаётся с null password. Что следует сделать до запуска в автоматизации?
Вопрос 10 из 30
Один credential используется для всех сервисов. Какая граница важна для автоматизации?
Вопрос 11 из 30
Get-Secret возвращает секрет из зарегистрированного vault. Какое утверждение верно для этого случая?
PowerShellGet-Secret возвращает секрет из зарегистрированного vault
Register-SecretVault -Name Local -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Get-Secret -Name ApiToken
Вопрос 12 из 30
Get-SecretInfo перечисляет метаданные. Почему локальный успех ещё ничего не доказывает?
PowerShellGet-SecretInfo перечисляет метаданные
$result = Get-SecretInfo | Select-Object Name,Type,VaultName
$shape = if($null -eq $result){'<null>'}elseif($result -is [array]){'array'}else{$result.GetType().Name}
[pscustomobject]@{ Shape=$shape; Values=@($result) }
Вопрос 13 из 30
SecretStore настроен без пароля для автоматизации. Какой вариант точнее выражает контракт?
PowerShellSecretStore настроен без пароля для автоматизации
$result = Set-SecretStoreConfiguration -Authentication None -Interaction None
$items = @($result)
[pscustomobject]@{ Count=$items.Count; First=$items | Select-Object -First 1; IsNull=($null -eq $result) }
Вопрос 14 из 30
Секрет кэшируется в глобальной переменной. Что следует сделать до запуска в автоматизации?
Вопрос 15 из 30
Vault временно недоступен. Какое ограничение здесь нельзя упустить?
Вопрос 16 из 30
Verbose выводит объект headers целиком. Что стоит изменить в первую очередь?
PowerShellVerbose выводит объект headers целиком
$safe=$headers.Clone();$safe.Authorization="[REDACTED]";Write-Verbose ($safe|ConvertTo-Json -Compress)
Вопрос 17 из 30
catch выводит полную командную строку. Какой вывод был бы слишком сильным?
PowerShellcatch выводит полную командную строку
$result = catch{Write-Error ("Operation failed: {0}" -f $_.FullyQualifiedErrorId)}
$items = @($result)
[pscustomobject]@{ Count=$items.Count; First=$items | Select-Object -First 1; IsNull=($null -eq $result) }
Вопрос 18 из 30
Start-Transcript включён на сеансе с Get-Credential. Какое условие нужно проверить отдельно?
PowerShellStart-Transcript включён на сеансе с Get-Credential
# Сценарий для ревью: Start-Transcript включён на сеансе с Get-Credential.
$context = [pscustomobject]@{ User=[Environment]::UserName; Host=$Host.Name; At=[datetimeoffset]::UtcNow }
$headers = @{ Authorization = "Bearer $env:API_TOKEN" }
Write-Information (ConvertTo-Json @{ Context=$context; Headers=$headers }) -InformationAction Continue
Invoke-RestMethod -Uri $uri -Headers $headers -ErrorAction Stop
Вопрос 19 из 30
Секрет маскируется заменой только точного значения. Что следует сделать до запуска в автоматизации?
Вопрос 20 из 30
CI печатает все переменные окружения при отладке. Как исправить причину, а не только симптом?
Вопрос 21 из 30
Автоматизация не может разблокировать vault. Что здесь относится к данным, а что — к представлению?
PowerShellАвтоматизация не может разблокировать vault
$result = & { Get-SecretVault;Get-SecretStoreConfiguration }
$items = @($result)
[pscustomobject]@{ Count=$items.Count; First=$items | Select-Object -First 1; IsNull=($null -eq $result) }
Вопрос 22 из 30
DPAPI blob не читается на новом сервере. Какое действие не создаст новой скрытой зависимости?
PowerShellDPAPI blob не читается на новом сервере
# Сценарий для ревью: DPAPI blob не читается на новом сервере.
$context = [pscustomobject]@{ User=[Environment]::UserName; Host=$Host.Name; At=[datetimeoffset]::UtcNow }
$headers = @{ Authorization = "Bearer $env:API_TOKEN" }
Write-Information (ConvertTo-Json @{ Context=$context; Headers=$headers }) -InformationAction Continue
Invoke-RestMethod -Uri $uri -Headers $headers -ErrorAction Stop
Вопрос 23 из 30
Секрет неожиданно попал в лог. Как следует читать этот фрагмент?
PowerShellСекрет неожиданно попал в лог
# Сценарий для ревью: Секрет неожиданно попал в лог.
$context = [pscustomobject]@{ User=[Environment]::UserName; Host=$Host.Name; At=[datetimeoffset]::UtcNow }
$headers = @{ Authorization = "Bearer $env:API_TOKEN" }
Write-Information (ConvertTo-Json @{ Context=$context; Headers=$headers }) -InformationAction Continue
Invoke-RestMethod -Uri $uri -Headers $headers -ErrorAction Stop
Вопрос 24 из 30
Credential работает локально, но не при втором переходе. Что стоит изменить в первую очередь?
Вопрос 25 из 30
После ротации часть задач использует старое значение. Как поступить, чтобы поведение осталось предсказуемым?
Вопрос 26 из 30
Секрет зашит в ps1 и удалён последующим коммитом. Как следует читать этот фрагмент?
PowerShellСекрет зашит в ps1 и удалён последующим коммитом
# Сценарий для ревью: Секрет зашит в ps1 и удалён последующим коммитом.
$context = [pscustomobject]@{ User=[Environment]::UserName; Host=$Host.Name; At=[datetimeoffset]::UtcNow }
$headers = @{ Authorization = "Bearer $env:API_TOKEN" }
Write-Information (ConvertTo-Json @{ Context=$context; Headers=$headers }) -InformationAction Continue
Invoke-RestMethod -Uri $uri -Headers $headers -ErrorAction Stop
Вопрос 27 из 30
Vault даёт сценарию доступ ко всем секретам команды. Что следует сделать до запуска в автоматизации?
PowerShellVault даёт сценарию доступ ко всем секретам команды
# Сценарий для ревью: Vault даёт сценарию доступ ко всем секретам команды.
$context = [pscustomobject]@{ User=[Environment]::UserName; Host=$Host.Name; At=[datetimeoffset]::UtcNow }
$headers = @{ Authorization = "Bearer $env:API_TOKEN" }
Write-Information (ConvertTo-Json @{ Context=$context; Headers=$headers }) -InformationAction Continue
Invoke-RestMethod -Uri $uri -Headers $headers -ErrorAction Stop
Вопрос 28 из 30
Секрет передаётся через обычный параметр string. Что остаётся непроверенным после успешного запуска?
PowerShellСекрет передаётся через обычный параметр string
# Сценарий для ревью: Секрет передаётся через обычный параметр string.
$context = [pscustomobject]@{ User=[Environment]::UserName; Host=$Host.Name; At=[datetimeoffset]::UtcNow }
$headers = @{ Authorization = "Bearer $env:API_TOKEN" }
Write-Information (ConvertTo-Json @{ Context=$context; Headers=$headers }) -InformationAction Continue
Invoke-RestMethod -Uri $uri -Headers $headers -ErrorAction Stop
Вопрос 29 из 30
Ротация выполняется без периода перекрытия. На каком правиле основан результат?
Вопрос 30 из 30
Дамп процесса хранится как обычный диагностический файл. Какое ограничение здесь нельзя упустить?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу