知識マップ: PowerShellでの資格情報の安全な扱い ── 平文パスワードをスクリプトから追放する
記事「PowerShellでの資格情報の安全な扱い ── 平文パスワードをスクリプトから追放する」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
PowerShellスクリプトに平文で書かれたパスワードは、Git履歴・共有フォルダ・ログといったコピーが増える経路すべてが漏えい経路になる。対話実行はGet-CredentialでPSCredentialとして受け取れば足りるが、無人実行ではExport-ClixmlによるDPAPI暗号化(同一ユーザー・同一マシン限定)が最小構成の実用解になり、秘密が複数あればSecretManagement/SecretStoreやAzure Key Vaultでの一元管理へ進む。ただしSecretStoreはgMSAのような管理されたアカウントでは動作しない。最優先の現実解は資格情報そのものを持たない設計で、実行アカウントにgMSAを使えばパスワード管理をOSに任せられ、クラウド資源はマネージドIDへ寄せられる。加えてスクリプトブロックログには資格情報が記録されうるため、保護されたイベントログの併用も設計に含める必要がある。
flowchart LR
accTitle: PowerShellの資格情報管理の知識マップ
accDescr: 平文パスワードのリスクを起点に、Get-Credential・PSCredential・SecureStringによる受け渡し、Export-ClixmlのDPAPI保存、SecretManagement・SecretStore・Azure Key Vaultによる一元管理、gMSAとマネージドIDによる資格情報を持たない設計、スクリプトブロックログと保護されたイベントログの関係を示す図
powershell["PowerShell"]
plaintext_credential_risk["平文パスワードの埋め込みリスク"]
pscredential["PSCredential"]
get_credential["Get-Credential"]
securestring["SecureString"]
task_scheduler["タスクスケジューラの無人実行"]
export_clixml["Export-Clixml(資格情報ファイル)"]
dpapi["DPAPI"]
secretmanagement["SecretManagementモジュール"]
secretstore["SecretStoreモジュール"]
azure_key_vault["Azure Key Vault"]
gmsa["gMSA(group Managed Service Account)"]
active_directory["Active Directory(AD DS)"]
managed_identity["マネージドID"]
entra_id["Microsoft Entra ID"]
log_credential_exposure["ログ・トランスクリプトへの資格情報の漏えい"]
script_block_logging["スクリプトブロックログ"]
protected_event_logging["保護されたイベントログ(Protected Event Logging)"]
psscriptanalyzer["PSScriptAnalyzer"]
powershell -->|"利用する"| pscredential
get_credential -->|"実装を担う"| pscredential
pscredential -->|"利用する"| securestring
get_credential -->|"推奨される対応"| plaintext_credential_risk
get_credential -->|"用いるのは非推奨"| task_scheduler
export_clixml -.->|"利用する"| dpapi
task_scheduler -.->|"前提とする"| export_clixml
export_clixml -->|"推奨される対応"| plaintext_credential_risk
secretmanagement -->|"利用する"| secretstore
secretmanagement -.->|"利用する"| azure_key_vault
secretmanagement -->|"推奨される対応"| plaintext_credential_risk
secretstore -.->|"前提とする"| export_clixml
secretstore -->|"両立しない"| gmsa
gmsa -->|"推奨される対応"| plaintext_credential_risk
gmsa -->|"前提とする"| active_directory
task_scheduler -.->|"利用する"| gmsa
managed_identity -->|"推奨される対応"| plaintext_credential_risk
managed_identity -->|"前提とする"| entra_id
plaintext_credential_risk -->|"原因になり得る"| log_credential_exposure
script_block_logging -.->|"原因になり得る"| log_credential_exposure
protected_event_logging -->|"軽減する"| log_credential_exposure
plaintext_credential_risk -->|"で確認できる"| psscriptanalyzer
powershell -->|"利用する"| securestring
azure_key_vault -->|"推奨される対応"| plaintext_credential_risk
概念間の関係(全24件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- PowerShellはPSCredentialを利用します。
- Get-CredentialはPSCredentialの実装を担います。
- PSCredentialはSecureStringを利用します。
- Get-Credentialは平文パスワードの埋め込みリスクに対する本記事の推奨です。
- Get-Credentialをタスクスケジューラの無人実行に用いることは推奨されません。
- Export-Clixml(資格情報ファイル)はDPAPIを利用します。
- タスクスケジューラの無人実行はExport-Clixml(資格情報ファイル)を前提とします。
- Export-Clixml(資格情報ファイル)は平文パスワードの埋め込みリスクに対する本記事の推奨です。
- SecretManagementモジュールはSecretStoreモジュールを利用します。
- SecretManagementモジュールはAzure Key Vaultを利用します。
- SecretManagementモジュールは平文パスワードの埋め込みリスクに対する本記事の推奨です。
- SecretStoreモジュールはExport-Clixml(資格情報ファイル)を前提とします。
- SecretStoreモジュールはgMSA(group Managed Service Account)と両立しません。
- gMSA(group Managed Service Account)は平文パスワードの埋め込みリスクに対する本記事の推奨です。
- gMSA(group Managed Service Account)はActive Directory(AD DS)を前提とします。
- タスクスケジューラの無人実行はgMSA(group Managed Service Account)を利用します。
- マネージドIDは平文パスワードの埋め込みリスクに対する本記事の推奨です。
- マネージドIDはMicrosoft Entra IDを前提とします。
- 平文パスワードの埋め込みリスクはログ・トランスクリプトへの資格情報の漏えいの原因になることがあります。
- スクリプトブロックログはログ・トランスクリプトへの資格情報の漏えいの原因になることがあります。
- 保護されたイベントログ(Protected Event Logging)はログ・トランスクリプトへの資格情報の漏えいを軽減します。
- 平文パスワードの埋め込みリスクはPSScriptAnalyzerで確認できます。
- PowerShellはSecureStringを利用します。
- Azure Key Vaultは平文パスワードの埋め込みリスクに対する本記事の推奨です。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。