web-dev-qa-db-ja.com

証明書を使用して必要な状態の構成で資格情報を保護する

私はDSCを使い始めたばかりですが、それをどのように機能させるかを考えています。

私が行き詰まっているのは、資格情報が実際に保護される方法です。私の現在の理解では、それはそれほど素晴らしいものではありません。

大きな3つの問題はこれらです。公開鍵を復号化ソースとして使用すると、実際にこれらの資格情報をどのように保護できますかプッシュおよびプルシナリオで証明書を必要とするコンピューターはどれですか?これらの問題に照らして資格情報を処理するためのベストプラクティスは何ですか?

証明書の公開鍵の使用は、送信元の認証に適しています。ただし、これを復号化キーとして使用すると、証明書の公開キーへのアクセスによってパスワードへのアクセスが決定されます。

MOFファイルを復号化する必要があるすべてのコンピューターに証明書をプッシュする必要がある場合、平均的なユーザーが証明書にアクセスしてMOFを復号化できないようにする方法は何ですか? Active Directoryのセキュリティとは、プレーンテキストのままにして、ADのセキュリティのみに依存することを意味します。

誰かがこれを回避するのを手伝ってくれる?

8
Simon Gill

基本的な考え方

  1. 構成するホストには、証明書(秘密鍵付き)がインストールされている必要があります。
  2. ターゲットノードのローカル構成マネージャー(LCM)をセットアップするときは、証明書そのものの拇印を指定する必要があります。これにより、資格情報を復号化するために使用されるローカル証明書(より正確には、どの証明書の秘密鍵)がLCMに通知されます。
  3. DSC構成は、同じ証明書の証明書(公開鍵)のみを含むファイルを指す必要があります。これは構成データで行われるため、それぞれに同じ構成を使用する場合は、ノードごとに異なる証明書を指定できます。
  4. MOFが生成されると、公開鍵がMOFを生成するマシンによって使用され、資格情報がencyptになります。
  5. ターゲットノードのLCMがプルサーバーから(MOF形式で)構成を取得するとき、サムプリントで識別された証明書の秘密キーを使用してdecrypt資格情報オブジェクト。

少し詳しく

公開鍵を使用して復号化することはできません。また、秘密鍵を構成生成マシンや配布マシンと共有していません。

すべての資格情報に単一の証明書が使用されているかのように、ワークフローを検討しているようです。あなたはそれを行うことができますが、アイデアは各ノードが独自のキーペアを持っているということだと思います。

「平均的なユーザー」とは、管理者以外のユーザーを意味し、証明書の秘密キーをエクスポートできません(アクセス許可が付与されていない場合)。このキーを移動しないため、ほとんどの可能性はありません。それが公開されています。ユーザーが管理者である場合は、もちろんアクセスできます。

プレーンテキストの認証情報を設定に保存すると、未処理のpowershell設定でも、生成されたMOFでも公開される可能性が高くなります。暗号化されていない場合は、セキュリティで保護する必要があります。

  • 設定が保存されているファイルシステム/ネットワーク共有の場所
  • 生成されたMOFが保存されるfs/share
  • プルサーバーにMOFを保存するfs/share
  • プルサーバーがSSLで実行されていることを確認します(とにかくこれを行う必要があります)
  • プルサーバーで認証が行われていることを確認してください。そうでない場合、匿名クエリが公開された資格情報を持つ構成を取得する可能性があります。

DSCのセキュリティで保護された資格情報はかなり上手く処理されていると思いますが、最初にそれを設定するのは少し大変なことです。

AD PKIはこれを簡単にします

AD環境でエンタープライズPKIを使用している場合は、各マシンがCAへの自動登録用にセットアップされている可能性が高いため、マシン固有の証明書更新されます。この目的で使用する必要な設定があります。

これを実装する方法

現在のところ、DSCにはツールが非常にむき出しになっているため、構成を生成し、スクリプトを記述して独自のワークフローを作成することになるでしょう。

私の場合、LCMメタMOFを生成するためと、ノードの実際の構成を生成するための個別のスクリプトを用意しているため、資格情報を保護するための手順は両方に分かれています。

LCM生成スクリプトでは、実際にCAにドメインを照会して、構成中のマシンのホスト名に対応する証明書を見つけています。証明書を取得し(CAには秘密鍵がなく、公開鍵しかありません)、後で使用できるようにパスに保存します。メタMOFは、証明書の拇印を使用するように構成されます。

ノード構成スクリプトで、証明書ファイルを使用するように構成データを設定します(ここでも公開鍵のみ)。 MOFが生成されると、資格情報はその証明書で暗号化され、特定のノードの秘密鍵でのみ復号化できます。

参照

私は上記で自分の経験を参照しましたが、この記事は途中で大きな助けになりました: https://devblogs.Microsoft.com/powershell/want-to-secure-credentials-in-windows-powershell-望ましい状態の構成

私は自分でいくつかの穴を埋める必要がありました。それらが示す例で注意すべきことの1つは、ノード構成でThumprintを提供することです。これはノード構成には必要ありません。構成とLCMメタ構成を同時に生成するだけで、構成データを使用してサムプリントを保存し、そこで使用します。

最後の段落は混乱するかもしれませんが、記事の文脈ではより理にかなっています。両方の設定を同時に生成しない場合、それらの例は奇妙に見えます。私はそれをテストしました。資格情報を暗号化するための構成データでは、Thumbprintは必要ありません。 CertificateFileは必須ですが、構成データに含まれている必要があるため、以前に構成データを使用していなかった場合は、ここで使用します。

11
briantist