パスワードをタスクに置かずにWindows VPNを再接続する
rasdialタスクは、その引数を読むまでは機能します。平文の秘密を避ける三つの設計を比較し、サーバーの対応とログオン方式で選びましょう。
監視なしの再接続手法は、結局はパスワードをどこに置くかという同じ問いにたどり着きます。よくある答えはタスクのアクションそのもので、それはパスワードにとって最悪の場所でもあります。別の設計が二つあります。どれが合うかは、マシンが人なしで認証できるか、サーバーが証明書を受け入れるかで決まります。
タスクのアクションが読み取れるまま残すもの
スケジュールされたタスクの引数は定義の一部であり、隠された実行時の値ではありません。タスクを読める人、バックアップを復元できる人、XMLをエクスポートできる人は、入力した文字列をそのまま見られます。実行中は同じ文字列がプロセス一覧に現れます。監視エージェントが、あなたが決して確認しないログにコピーするかもしれません。
schtasks /query /tn "VPN Reconnect" /xml
cmdkey /list
逆だと決めつける前に確認してください。最初のコマンドはアクションとその引数を含む完全な定義を出力します。二つ目は現在のアカウントがキャッシュしている資格情報を示し、以下の代替設計にとって重要です。タスクがまだ古い値を保持しているため、パスワードがタスクのXMLに現れる場合の変更は修理の半分にすぎません。
保存された事前共有キーが実際にもたらすもの
Add-VpnConnection -L2tpPsk キーをタスクではなく接続の電話帳エントリに書き込みます。これはタスクのアクションより小さな露出面です。それでも、マシンの管理者が電話帳を読めるため、回収可能な秘密です。
自分が管理する二台のマシン間の実験用リンクなら、その交換は許容できるかもしれません。共有エンドポイント上のユーザー資格情報なら許容できません。暗号化ストレージと呼んでも、誰が読めるかは変わりません。電話帳は構成ファイルです。開ける人のために計画し、ユーザーとしてログオンできる人だけのために計画しないでください。
Winlogon資格情報は秘密をなくし、依存関係を増やす
-UseWinlogonCredential 別の道を選びます。接続は次の相手と認証します ログオンしているユーザーの資格情報に対するMSCHAPv2。そのアカウントのために余分なものは保存されません。
追加される依存関係は重大です。借用できる対話型ログオンが必要で、これによりサービスアカウントとログオン前のタスクは除外されます。接続はまた、そのユーザーの資格情報がサーバー上で到達できるものすべてを継承します。このスイッチは資格情報の出どころについての表明として読み、セキュリティ設定として読まないでください。出どころを変えるだけで、その後にサーバーがセッションを承認する方法は何も変わりません。
証明書認証は何も保存しないため拡張できる
サーバーがEAP-TLSをサポートする場合、マシン証明書は共有秘密を完全に除去し、失効は証明書レイヤーで行われます。SYSTEMとして実行されるタスクは、対話型ログオンなしでその証明書を提示できます。その上に構築する前に、サーバーが証明書認証を受け入れることを確認してください。サポートされていない方式に依存する設計は、解決策ではなく計画です。次に、秘密鍵をデバイスIDならマシンストア、人物ならユーザーストアのどこに置くかを決めます。
ユーザー名とパスワードを避けられない場合は、タスク自身のアカウントに限定してCredential Managerに保存します。クライアントには引数からではなく、そこから読ませます。タスクが出力せずに取得できる秘密は、その定義に書かれたものより小さな問題です。
次のローテーションの前に成果物を確認する
意図したものではなく、保存されているものを見てください。ユーザーごとの電話帳、全ユーザー用のコピー、タスクのXML、ダイヤルコマンドを呼び出すスクリプトを確認します。対話型アカウント用に保存された資格情報はSYSTEMには見えないため、証明書またはキャッシュされた資格情報がタスクの使用するアカウントに限定されていることを確認します。
認証方式とアカウントをタスク自身のメモに記録します。次にサーバーのポリシーを変更する人は、どの設計が使われているかを知る必要があります。その答えは再接続の挙動だけからは見えません。次のローテーションが最初に見る場所に書いてください。