`ステートメントを使用して、インストールされたPostgreSQLパッケージのバージョンが10以上であることを検証しました。+`は制限が少なくなります。10サービス名「+」をリソース引数として渡します。ファイルを保存して終了します。次に、プロファイルを実行します。`++`ディレクトリにいることを確認してください。.PostgreSQL前提条件チュートリアルを完了したため、テストに合格します。出力は次のようになります。skipped出力は、制御が成功したことを示しています。コントロールは、その中のすべてのテストが成功した場合にのみ成功します。出力は、すべてのテストが成功したことも確認します。PostgreSQLの正しいバージョンがインストールされ、サービスが正常であることを確認したら、PostgreSQLが正しいポート、アドレス、およびプロトコルでリッスンすることを保証する新しいコントロールを作成します。このテストでは、_attributes_も使用します。InSpec属性を使用してプロファイルをパラメーター化し、さまざまな環境またはターゲットシステムで簡単に再利用できるようにします。+`属性を定義します。+`属性を追加します。ファイルの最後に次を追加します。これは、PostgreSQLがデフォルトでリッスンするポートであるためです。ファイルを保存して終了します。+`を実行して、プロファイルがまだ有効であることを確認します。.エラーがなければ、続行できます。+`ファイルを開き、ファイルの最後に属性が存在することを確認します。次に、PostgreSQLプロセスが実行され、正しいユーザーで構成されていることを確認するコントロールを作成します。+`の最後に次のコントロールを追加します。+`変数を宣言することから始めます。次に、コントロールとそのメタデータを宣言します。`]リソースを含めて、基本的なポートプロパティをテストします。`マッチャーを使用して、指定されたポートがターゲットシステムでリッスンしていることをテストします。`マッチャーは、指定されたアドレスがポートに関連付けられているかどうかをテストします。この場合、PostgreSQLはローカルアドレス「+127.0.0.1」でリッスンします。+`マッチャーは、ポートがリッスンしているインターネットプロトコルをテストします。+`接続をリッスンします。`]リソースを含めます。`リソースを使用します。+`プロセスを所有していることをテストします。`]リソースがあります。`リソースを含めます。`ユーザーがシステムに存在することをテストします。次に、次のコマンドを使用してプロファイルを実行します。.テストに合格し、出力は次のようになります。skipped出力は、コントロールとテストの両方が成功したことを示しています。このセクションでは、最初のInSpecプロファイルとコントロールを作成し、それらを使用してテストを整理しました。いくつかのInSpecリソースを使用して、正しいバージョンのPostgreSQLがインストールされていること、PostgreSQLサービスが有効で正しく実行されていること、PostgreSQLユーザーがシステムに存在することを確認しました。これで、構成を監査する準備が整いました。ステップ4-PostgreSQL構成の監査この手順では、いくつかのPostgreSQL構成値を監査します。これにより、これらの構成ファイルを操作するための基盤が得られ、必要に応じてPostgreSQL構成パラメーターを監査できます。PostgreSQLインストールを監査するテストができたので、PostgreSQL構成自体を監査します。+`にある構成ファイルに保存されます。ロギング、パスワード暗号化、SSL、レプリケーション戦略など、さまざまなデプロイメントのPostgreSQL構成に関して異なる要件がある場合があります。これらの要件は構成ファイルで指定します。+]リソースを使用して、PostgreSQL構成ファイルの内容の期待値に対して特定の名前付き構成オプションをテストします。このテストでは、手動で設定するデフォルト以外のPostgreSQL設定値を想定しています。好みのテキストエディターでPostgreSQL構成ファイルを開きます。/etc/postgresql/10/main/postgresql.conf以下の構成値を設定します。`#`を削除してコメントを外し、提供されている値を設定します。on設定した構成値:保存されたパスワードが常にscram-sha-256アルゴリズムで暗号化されていることを確認してください。+)からログメッセージをキャプチャし、ログファイルにリダイレクトするバックグラウンドプロセスです。PostgreSQLサーバーへの接続試行と成功した接続のロギングを有効にします。セッション終了のロギングを有効にします。完了したすべてのステートメントの期間のロギングを有効にします。構成ファイルを保存して終了します。次に、PostgreSQLサービスを再起動します。+`リソースを使用して任意のPostgreSQL設定オプションをテストできます。main`にあるPostgreSQL設定ディレクトリを渡します。この設定ディレクトリは、すべてのオペレーティングシステムとプラットフォームで同じではないため、プロファイル属性として渡すことで、このプロファイルを異なる環境で再利用しやすくなります。+`セクションに追加します。'/etc/postgresql/10/main'ファイルを保存して終了します。+`を編集したばかりであるため、次のコマンドを実行してInSpecプロファイルがまだ有効であることを確認します。.エラーがなければ、続行できます。+`ファイルを開き、上記の行がファイルの最後にあることを確認します。次に、施行する構成値を監査するコントロールを作成します。+`の最後に追加します。endendここで、2つの変数を定義します。+`属性を保持します。次に、名前とメタデータを使用してコントロールを定義します。`マッチャーを使用して、設定オプションに必要な値が正しいことを確認します。次に、次のコマンドでテストを実行します。.テストに合格し、出力は次のようになります。skipped出力は、3つのコントロールとすべてのテストがスキップされたテストまたはコントロールなしで成功したことを示しています。+]リソースを使用して、構成ファイルから特定のPostgreSQL構成値をテストする新しいInSpecコントロールを追加しました。このセクションでいくつかの値を監査しましたが、これを使用して、構成ファイルの構成オプションをテストできます。ステップ5-PostgreSQLクライアント認証の監査PostgreSQL構成のテストをいくつか作成したので、クライアント認証のテストをいくつか作成します。これは、さまざまな種類のユーザーに対して特定の認証方法を保証する必要があるインストールにとって重要です。ローカルでPostgreSQLに接続するクライアントが常にパスワードで認証する必要があることを確認したり、特定のIPアドレスまたはIPアドレス範囲からの接続を拒否したりするなど。セキュリティが懸念されるPostgreSQLインストールの重要な設定は、暗号化されたパスワード認証のみを許可することです。」に設定する必要があります。`認証方法を持っています。`に変更する必要があります。/etc/postgresql/10/main/pg_hba.confファイルの上部にはコメントが含まれています。次のように変更します。+`設定は次のようになります。scram-sha-256...構成ファイルを保存して終了します。次に、PostgreSQLサービスを再起動します。+]リソースを使用します。`ファイルで定義されたクライアント認証データをテストするために使用されます。+`ファイルのパスを渡します。」に等しいことを確認します。+`の最後に追加します。+`ファイルの絶対位置を保存します。`で連結するRubyメソッドです。+`変数に保存されます。その後、コントロールとそのメタデータを宣言して構成します。」も持っていることをチェックします。`の場合に同じことを行います。+」ユーザーとして実行します。次を実行してプロファイルを実行します。.出力は次のようになります。skippedこの出力は、追加した新しいコントロールと以前のすべてのコントロールが成功したことを示しています。プロファイル内のすべてのテストが成功したことも示します。10インストールを正常に監査しました。DSL、マッチャー、リソース、プロファイル、属性、CLIなどのInSpecツールの選択を使用しました。[リソースセクション]に組み込むことができます。resources]を定義するメカニズムも提供します。これらのカスタムリソースは、通常のRubyクラスとして記述されています。`]セクションを調べることもできます。実行することも、独自のプロファイルで拡張することもできます。シェフスーパーマーケットで自分のプロフィールを一般の人と共有することもできます。+]など、Chefユニバースの他のツールを調べることで、さらに先へ進むことができます。InSpecはHabitatと統合されていますこれにより、Habitatにパッケージ化されたアプリケーションとともにコンプライアンスコントロールを出荷し、継続的に実行することができます。tutorialsページで公式およびコミュニティのInSpecチュートリアルを探索できます。高度なInSpecリファレンスについては、公式のhttps://www.inspec.io/docs[InSpecドキュメント]を確認してください。