Comments
Transcript
Splunk Enterprise 6.3.0 Splunk Enterprise のセキュリティ
Splunk Enterprise 6.3.0 Splunk Enterprise のセキュリティ 作成⽇時:9/15/2015 10:22 am Copyright (c) 2016 Splunk Inc. All Rights Reserved Table of Contents Splunk Enterpri se のセキュリティについて Splunk Enterprise のセキュリティについて Splunk の保護 5 5 5 Splunk の安全なインストール Splunk Enterprise の安全なインストール ネットワーク上の Splunk Enterprise の保護 サーバーとオペレーティングシステムのベストプラクティス例 設定の保護強化 不要な Splunk Enterprise コンポーネントの無効化 5 5 6 6 6 7 ユーザーおよびロールベースのアクセス制御 Splunk データを保護するための、アクセス制御の使⽤ ユーザー認証について ロールベースのユーザーアクセスの設定について 権限を持つロールの定義について Splunk Web を使ったロールの追加と編集 authorize.conf を使ったロールの追加と編集 管理コンソールと App へのアクセスの設定 既存のユーザーやロールの検索 すべてのユーザーアカウントの削除 Splunk ナレッジオブジェクトへのアクセスの保護 7 7 7 8 9 10 11 13 14 14 14 Splunk Enterpri se のビルトイン認証を使ったユーザーの設定 Splunk Enterprise のネイティブ認証を使ったユーザー認証の設定 Splunk Web を使ったユーザーの設定 CLI を使ったユーザーの設定 Splunk Web によるロールへのユーザーの追加 15 15 15 15 16 LDAP によるユーザー認証の設定 LDAP によるユーザー認証の設定 LDAP を使った Splunk ユーザーロールの管理 LDAP の前提条件と検討事項 Splunk が複数の LDAP サーバーと連携する仕組み Splunk Web による LDAP の設定 Splunk Web を使った LDAP グループの Splunk ロールへのマップ 設定ファイルによる LDAP の設定 設定ファイルでの LDAP グループ/ユーザーの Splunk ロールへの マップ LDAP 設定のテスト Splunk のビルトイン認証から LDAP への変換 LDAP ユーザー削除のベストプラクティス 16 16 17 17 17 18 21 21 23 外部システムによるユーザー認証の設定 外部システムによるユーザー認証の設定 認証スクリプトの作成 authentication.conf の編集 PAM 認証の使⽤ サーチ時の getSearchFilter 関数を使ったフィルタリング 24 24 25 27 28 28 SAML によるシングルサインオン設定 SAML によるシングルサインオンについて Splunk Web における SAML SSO の設定 28 28 29 23 23 24 グループのロールへのマップ 設定ファイルにおける SAML SSO の設定 SAML SSO のトラブルシューティング 30 31 32 リバースプロキシによるシングルサインオンの設定 リバースプロキシによるシングルサインオンについて リバースプロキシによるシングルサインオンの設定 リバースプロキシ SSO のトラブルシューティング 33 33 35 36 SSL を使った Splunk Enterpri se の保護について SSL を使った Splunk の保護について Windows および Linux での SSL ツールの使⽤について 許可/制限する SSL バージョンの設定 37 37 38 39 SSL 証明書の取得 証明書の⾃⼰署名⽅法 次のステップ サードパーティが署名した証明書の⼊⼿⽅法 Splunk ⽤の署名された証明書の準備⽅法 Splunk Web ⽤の⾃⼰署名証明書 Splunk Web ⽤のサードパーティが署名した証明書の⼊⼿ 暗号スイートの決定 40 40 42 42 44 45 48 49 SSL による ブラウザから Splunk Web への通信の保護 Splunk Web の保護について Splunk Web で暗号化 (https) を有効にする web.conf で暗号化 (https) を有効にする 独⾃の証明書を使った Splunk Web の保護 Splunk Web 認証のトラブルシューティング 50 50 50 51 51 52 SSL による Splunk フォワーダーからインデクサーへの通信の保護 フォワーダーからのデータの保護について デフォルトの証明書を使⽤する Splunk 転送の設定 独⾃の証明書を使⽤するための、Splunk 転送の設定 その他の設定オプション 設定の検証 フォワーダー/インデクサー認証のトラブルシューティング 52 53 53 54 55 56 57 SSL を使った Splunk 間通信の保護 Splunk 間通信の保護について Splunk Web と splunkd 間の通信の保護 分散サーチヘッドとピアの保護 デプロイサーバーとクライアントの保護 クラスタの保護について デフォルト値を使った Splunk 間通信について 57 57 58 58 58 59 59 Splunk Enterpri se アクティビティの監査 Splunk を使ったシステムアクティビティの監査 Splunk アクティビティの監査 監査イベントのサーチ データ統合性の管理 60 60 60 60 61 Splunk Enterpri se のパスワードとアクセスのセキュリティ 複数のサーバーへの保護パスワードのデプロイ サービスアカウントの保護 Splunk Enterprise のアクセス制御リストの使⽤ 62 62 62 62 Splunk Enterprise のセキュリティについて Splunk Enterprise のセキュリティについて 新しくインストールまたはアップグレードした Splunk Enterprise の設定が完了し、使⽤を開始したらすぐに、 Splunk Enterprise とデータを保護するためにいくつかの作業を実施する必要があります。適切な⼿順を踏んで Splunk Enterprise を保護すれば、攻撃の⼿がかりを減らし、脆弱性のリスクや影響を低減することができます。 Splunk の保護 このマニュアルは、ご利⽤の Splunk 設定の保護、および以下の設定⽅法について説明しています。 ユーザー認証 の設定によるユーザーの作成と、ロール の割り当てによるユーザーアクセスの管理。 SSL を使った、Splunk 設定の通信の保護。 監査 を使ったデータの保護。 脆弱性やリスクを減らすための、Splunk インスタンスの強化。 ユーザー認証とロールベースのアクセス制御 ユーザーを設定して、アクセスを制御するためにロールを使⽤します。Splunk では 3 種類の⽅法でユーザーを設 定できます。 Splunk にビルトインされている独⾃のシステム、「Splunk 認証システムを使ったユーザー認証の設定」を 参照してください。 LDAPに関する説明は「LDAP によるユーザー認証の設定」を参照してください。 外部認証システム (PAM や RADIUS など) を使⽤するためのスクリプトによる認証 API、「外部システム を使ったユーザー認証の設定」を参照してください。 ユーザーを設定したら、権限やアクセスレベルを決定、制御するロールを割り当てられます。ロールと権限の詳細 は、「ロールベースのユーザーアクセスについて」を参照してください。 SSL を使った暗号化と認証 Splunk にはデフォルトの証明書とキーのセットが⽤意されており、これを有効にするとデータの暗号化とデータ 圧縮機能を利⽤することができます。また独⾃の証明書とキーを使って、ブラウザと Splunk Web 間の通信や フォワーダーからレシーバー (インデクサーなど) に送信されるデータを保護することができます。 特定の条件下では、分散サーチ環境での通信、デプロイサーバーからクライアントに送信される設定データ、 Splunk Web から splunkd への通信などを保護することもできます。 SSL を使った Splunk 通信の保護⽅法の詳細は、このマニュアルの「SSL を使った Splunk の保護について」を 参照してください。 監査 Splunk 内のアクティビティに注意してください (例えば、サーチや設定変更など)。 モニター モニター機能とホワイトリストを使ってすべての .conf ファイルのインデックスを作成することができま す。また、Splunk がサポートしている⼤部分の OS で、システムベースのモニター機能を利⽤して、ユー ザー属性の変更をモニターできます。 モニターの詳細は、『データの取り込み』マニュアルの「ファイルとディレクトリのモニター」を参照して ください。 監査イベント 監査イベントをモニターして、Splunk インスタンスを監視することができます。監査イベントは、サー チ、設定の変更、管理作業などを⽬的に、誰かが Splunk インスタンスにアクセスした時に⽣成されます。 各監査イベントには、どこの何がいつ変更され、誰が変更を⾏ったかに関する情報が記録されています。監 査イベントは、分散 Splunk 環境で、多数の Splunk サーバーに対する設定やアクセス制御の変更を検出す る場合に特に役⽴ちます。 詳細は、このマニュアルの「Splunk Enterprise アクティビティの監査」を参照してください。 Splunk の安全なインストール Splunk Enterprise の安全なインストール Splunk のダウンロード、インストール時には、以下の⼿順に従ってください。 整合性の検証 MD5 や SHA-512 などのハッシュ機能を使ってハッシュを⽐較して、Splunk Enterprise ダウンロードを検証し ます。信頼できるバージョンの OpenSSL を使⽤してください。例: ./openssl dgst -md5 <filename-splunk-downloaded.zip> または ./openssl dgst -sha512 <filename-splunk-downloaded.zip> 5 署名の検証 ダウンロードした RPM パッケージの信頼性は、以下のように GnuPG 公開鍵を使って検証することができます。 1. GnuPG 公開鍵ファイル (このリンクは TLS 経由) をダウンロードします。 2. 鍵のインストールには、以下のコマンドを使⽤します。 rpm --import <filename> 3. 次のコマンドでパッケージの署名を検証します: rpm -K <filename> ネットワーク上の Splunk Enterprise の保護 ある状況下では、Splunk Enterprise ポートが攻撃の影響を受けやすくなることがあります。Splunk Enterprise 設定をインターネットから遮断して、アクセスを防⽌しましょう。 可能ならば、ホストベースのファイアウォールを使って、Splunk Web、管理ポート、データポートへのアクセス を制限してください。Splunk Enterprise をホストベースのファイアウォール内で保護してください。リモート ユーザーは、VPN 上の Splunk Enterprise にアクセスさせるようにしてください。 次の⽅法で、Splunk Enterprise を外部の攻撃から防ぐことも可能です。 ホストファイアウォールの背後に配置して、このポートをローカル呼び出し専⽤に制限するように、CLI セ キュリティを制限します。 必要ではない限り、フォワーダーのポートへのアクセスは許可しないでください。 Splunk Enterprise は、信頼できるマシンのみがアクセスできる、分離されているネットワークセグメント にインストールしてください。 ポートへのアクセスを、必要な接続のみに制限します。必要な接続を以下に⽰します。 エンドユーザーと管理者には、Splunk Web へのアクセスが必要です (デフォルトでは TCP ポート 8000)。 サーチヘッドは、管理ポート (デフォルトでは TCP ポート 8089) でサーチピアにアクセスする必要が あります。 デプロイクライアントは、管理ポート (デフォルトでは TCP ポート 8089) でデプロイサーバーにアク セスする必要があります。 フォワーダーは、インデックスサーバーデータポート (デフォルトでは TCP ポート 9997) にアクセス する必要があります。 リモート CLI 呼び出しは、管理ポートを使⽤します。 サーバーとオペレーティングシステムのベストプラクティス例 オペレーティングシステム すべての Splunk サーバーの OS のセキュリティを強化することを強くお勧めします。 社内セキュリティ標準ガイドラインがない場合は、CIS セキュリティ強化規則をお勧めします。 最低でも、Splunk サーバーへのシェル/コマンドラインアクセスを制限してください。 Splunk Splunk インスタンスを冗⻑構成にして、両⽅に同じデータコピーのインデックスを作成させます。 Splunk のデータと設定を定期的にバックアップしてください。 定期的にバックアップから Splunk を復元して、正常に復元できるかどうかをテストしてください。 MD5 などのハッシュ機能を使ってハッシュを⽐較して、Splunk ダウンロードを検証します。例: ./openssl dgst md5 <filename-splunk-downloaded.zip> クライアントのブラウザ Firefox や Internet Explorer などの、サポートしているブラウザの最新バージョンを使⽤してください。 Firefox の noscript や Internet Explorer 8 のフィルタどの、クライアントサイド JavaScript ブロック機能 を利⽤して、XSS、XSRF、その他類似の不正使⽤を防⽌してください。 ユーザーには、最新版の Flash をインストールしていることを確認させてください。 物理的なセキュリティ すべての Splunk サーバーへの物理的なアクセスを制限してください。 Splunk エンドユーザーに、物理セキュリティとエンドポイントセキュリティについて教育してください。 Splunk Web のユーザーセッションタイムアウトに短めの時間を設定してください。詳細は、「タイ ムアウトの設定」を参照してください。 設定の保護強化 6 設定を保護するために、以下の事項を検討してください。 subversion などの設定管理ツールを使って、Splunk 設定のバージョンコントロールを⾏ってください。 Splunk 設定の変更を、既存の変更管理フレームワークと統合してください。 Splunk に⾃⼰の設定ファイルをモニターさせて、変更時にはアラートを⽣成するようにしてください。 不要な Splunk Enterprise コンポーネントの無効化 単⼀サーバー Splunk Enterprise デプロイ環境: フォワーダーでは、Splunk Web を実⾏しないでください。また、TCP または UDP ポート、または他の Splunk Enterprise インスタンスからデータを受信するように設定しないでください。 マルチサーバー Splunk Enterprise デプロイ環境: サーチヘッドは、TCP/UDP ポートまたは他の Splunk Enterprise インスタンスからデータを受信しないよ うにしてください。 ユーザーが分散環境のインデクサー上の Splunk Web にログインしない場合は、インデクサーの Splunk Web を無効にしてください。 フォワーダーでは、Splunk Web を実⾏しないでください。また、TCP または UDP ポート、または他の Splunk インスタンスからデータを受信するように設定しないでください。 ユーザーおよびロールベースのアクセス制御 Splunk データを保護するための、アクセス制御の使⽤ このページは現在作業中で、まもなく更新される予定です。 Splunk のロールベースのアクセス制御を利⽤すれば、柔軟で効率的に Splunk データを保護することができま す。場合によっては、ロールベースのアクセス制御によるデータ保護の⽅が、暗号化や SSL 証明書よりも効果的 (かつ設定が簡単) なこともあります。 Splunk がユーザーのデータへのアクセスを制御する⽅法は、リレーショナルデータベースのロールベースのアク セス制御のように考えることができます。場合によっては、データのセグメント化が必要な場合もあります。ただ し、それ以外の場合は、プレゼンテーション層でサーチと結果を制御することで (Splunk App の⼤半でできる対 処)、セキュリティニーズを満たせることもあります。 設定⽅法を考慮して、ロールベースのアクセスがご⾃分のニーズを満たすかどうかを判断する場合の使⽤事例を検 討してみましょう。例: 機密データを持つ可能性があるシステムへのアクセスを許可するだけでも法的な危険が伴う、とても機密性 の⾼いデータの場合、複数の Splunk インスタンスをインストールして、それぞれのインスタンスに対象と するユーザー⽤のデータを提供するように設定することを検討してください。 意図的または意図しないで機密データを不適切なユーザーに暴露した場合、法的な問題が発⽣する可能性が あります。そのような場合は、権限のあるアカウント⽤および権限のないアカウント⽤のインデックスを作 成し、それを各アクセスレベルに対応したロールに割り当てることを検討してください。 セキュリティ上の考慮事項があるけれども、法的な危険性がさほど⾼くない場合は、App を使ってアクセス を制限することができます。たとえば、静的ダッシュボードを持つ App を作成し、それらのダッシュボー ドで参照できる情報が少ないロールを割り当てて、そのロールを持つユーザーがアクセスできる情報の種類 を制限することができます。 編集済みデータのフィールド暗号化、サーチ除外、およびフィールドのエイリアス化も、サーチ対象を制限 するための有益な⼿段です。 ユーザー認証について Splunk Enterprise 認証機能により、追加したユーザーにロール を割り当てて、必要に応じてそれらのロールに 独⾃のアクセス権を与えることができます。 Splunk では、3 種類の認証システムがサポートされています。 Splunk 独⾃のビルトインシステム:Splunk のデフォルトロール、Admin 、Power 、または User に加え て、権限 のリストを使って独⾃のロールを定義することができます。Enterprise ライセンスの Splunk で は、デフォルトでビルトインの認証が有効になっています。詳細は、「Splunk ビルトインシステムのユー ザー認証の設定」を参照してください。 LDAP:Splunk は、その内部認証サービスまたは既存の LDAP サーバーによる認証をサポートしていま す。詳細は、「LDAP によるユーザー認証の設定」を参照してください。 スクリプトによる認証 API:スクリプトによる認証を利⽤して、Splunk の認証機能と RADIUS や PAM な どの外部認証システムを統合することができます。詳細は、「外部システムによるユーザー認証の設定」を 参照してください。 注意: ネイティブ認証、LDAP 、およびスクリプト認証を含めた認証機能は、Splunk Free では利⽤できませ ん。 Splunk Web を使って、または authorize.conf を編集することで、ユーザーを柔軟に作成したり、ロールに割り 7 当てたりすることができます。ロールと権限の詳細は、「ロールベースのユーザーアクセスについて」を参照して ください。 重要: Splunk のビルトインシステムは、他の外部システムよりも常に優先されます。Splunk によるユーザーの 認証順序を以下に⽰します。 1. Splunk ビルトイン認証 2. LDAP またはスクリプト認証 (有効な場合)。 ロールベースのユーザーアクセスの設定について Splunk Enterprise を利⽤している場合、パスワードを持つユーザーを作成して、それにロール を割り当てるこ とができます。ユーザーのアクセス権限 は、割り当てられているロールによって決まります。 ユーザーの詳細は、「ユーザー認証について」を参照してください。 デフォルトで、Splunk には以下のロールがあらかじめ定義されています。 admin:このロールは、ユーザー、オブジェクト、設定のすべて (または⼤部分) を管理する管理者向けに⽤ 意されており、ほぼすべての権限 が割り当てられています。 power (パワー):このロールはすべての共有オブジェクト (保存済みサーチなど)、アラート、タグイベント の編集、およびその他の類似の作業を⾏うことができます。 user (ユーザー):このロールは、⾃⼰の保存済みサーチの作成と編集、サーチの実⾏、⾃⼰の基本設定の編 集、イベントタイプの作成と編集、およびその他の類似の作業を⾏うことができます。 can_delete:このロールは、ユーザーにキーワードによる削除を許可します。この権限は、delete サーチコ マンドを使⽤する場合に必要になります。 独⾃のロールを作成して、それをユーザーに割り当てることも可能です。独⾃のロール (カスタムロール) を作成 する場合は、以下の事項を決定します。 許可するサーチ:ロールを割り当てるユーザーが実施できるサーチを定義することができます。 ロールの継承:あるロールに既存の 1 つまたは複数のロールからの、特定のプロパティを継承させることが できます。ロールの継承については、このトピックの後半で説明しています。 権限の割り当て:ロールを割り当てるユーザーに許可するアクション (パスワードの変更、フォワーダー設 定の変更など) を指定することができます。詳細は、「権限を持つロールの定義について」を参照してくだ さい。 許可するインデックスとデフォルトインデックスの設定:特定のインデックスにアクセスを制限し、デフォ ルトでサーチ対象とするインデックスを設定することができます。 Splunk Web を使ってロールを作成する⽅法については、「Splunk Web を使ったロールの追加と編集」を参照 してください。authorize.conf を編集してロールを作成する⽅法については、「authorize.conf を使ったロールの 追加と編集」を参照してください。 継承 原則的に、複数のロールに割り当てられたメンバーは、もっとも幅広い権限を持つロールからプロパティを継承し ます。 ユーザーのサーチフィルタ制限の継承⽅法 他のロールの特性を継承するロールを作成することができます。複数のロールに割り当てられたユーザーは、それ らのロールのプロパティを継承します。 サーチフィルタの場合、ユーザーが異なるサーチフィルタを持つ複数のロールに割り当てられた場合、すべての フィルタが結合され、各ロールの制限が適⽤されます。 たとえばデフォルトでは、Power および User ロールには、サーチを制限するサーチフィルタが定義されていませ ん。ユーザーがこれらのロールと⼀緒に他のフィルタが定義されているロール (例:srchFilter=x) に割り当てら れた場合、フィルタ設定のないロールにも割り当てられていますが、ユーザーはフィルタが定義されているロール の制限を継承します。 ユーザーに許可されているインデックスの継承⽅法 許可されているインデックスの場合、ユーザーには割り当てられているロールの中で最⾼レベルのアクセスが許可 されているロールのアクセス権が与えられます。 たとえば、ユーザーが特定の 1 つのインデックスのみへのアクセスが許可されているロール「⼀般ユーザー」に 割り当てられている場合に、より多くの権限が許可されておりすべてのインデックスにアクセスできるロール「⾼ 度なユーザー」にも割り当てられていると、そのユーザーはすべてのインデックスにアクセスすることができま す。「⾼度なユーザー」の権限を与えながら、「⼀般ユーザー」に定義されている 1 つのインデックスへのアク セスのみに制限したい場合は、そのような設定を持つロールを新たに作成する必要があります。 ユーザーの権限の継承⽅法 権限の場合、ユーザーには各ロールに許可されている最⾼レベルの権限が与えられます。 たとえば、ほぼすべての権限が与えられている「Admin」ロールに割り当てられているユーザーが、別の権限 セットが与えられている「⾼度なユーザー」ロールにも割り当てられている場合、ユーザーは両⽅のロールの権限 を持つことになります。 8 権限を持つロールの定義について Splunk Web でユーザーを作成する場合、ユーザーを 1 つのロールに割り当てます。詳細は、「ロールベースの ユーザーアクセスについて」を参照してください。 各ロールには、⼀連の権限 が含まれています。新たな、既存の、またはデフォルトのロールの権限を追加、編集 することができます。たとえば、データ⼊⼒の追加または保存済みサーチの編集を⾏うための権限をロールに追加 することができます。 Splunk Web を使ったロールへの権限の追加、変更⽅法については、「Splunk Web を使ったロールの追加と編 集」を参照してください。authorize.conf を編集してロールを作成する⽅法については、「authorize.conf を使っ たロールの追加と編集」を参照してください。 利⽤可能な権限の⼀覧 このリストには、任意のロールに追加できる権限が記載されています。このリストの最新版については、 authorize.conf を確認してください。Admin ロールには、「delete_by_keyword」を除く、このリスト内のすべ ての権限が与えられています。 権限名 できること accelerate_datamodel データモデルの⾼速化を有効または無効にします。 accelerate_search レポートの⾼速化を有効または無効にします。ロールがこれを使⽤するに は、schedule_search 権限も必要です。 admin_all_objects システム内の任意のオブジェクトにアクセス、変更します (ユーザーオブジェク ト、サーチジョブなど)。(オブジェクトに設定された任意の制限に優先します。) change_authentication 認証設定の変更と認証の再読込を⾏います。 change_own_password ユーザーが各⾃のパスワードを変更できます。 delete_by_keyword サーチで削除演算⼦ (delete) を使⽤します。 edit_deployment_client デプロイクライアント設定を変更します。 edit_deployment_server デプロイサーバー設定を変更します。 edit_dist_peer 分散サーチ⽤のピアを追加、編集します。 edit_forwarders フォワーダー設定を変更します。 edit_httpauths ユーザーセッションを編集、終了します。 edit_input_defaults データ取り込みのデフォルトホスト名を変更します。 edit_monitor データ⼊⼒を追加したり、監視対象ファイルの設定を編集したりします。 edit_roles ロールの編集とユーザー/ロールのマッピングの変更を⾏います。 edit_scripted スクリプトを使⽤したデータ取り込みを作成、編集します。 edit_search_head_clustering サーチヘッドクラスタリング設定を編集します。 edit_search_server タイムアウト、ハートビート、ブラックリストなどの、全般的な分散サーチを編集 します。 edit_server サーバー名やログレベルなどの、全般的なサーバー設定を編集します。 edit_splunktcp 他の Splunk インスタンスからの TCP ⼊⼒の受信設定を変更します。 edit_splunktcp_ssl Splunk TCP ⼊⼒の、SSL 固有の任意の設定を表⽰、編集できます。 edit_tcp ⼀般的な TCP ⼊⼒の受信設定を変更します。 edit_udp UDP ⼊⼒の設定を変更します。 edit_user ユーザーを作成、編集、または削除します。 edit_view_html HTML ベースのビューを作成、編集、または変更します。 edit_web_settings web.conf の設定を変更します。 embed_reports レポートを埋め込んで、埋め込みレポートの埋め込みを無効にします。 get_diag Splunk Enterprise インスタンスからリモートダイアログを取得するには、 /streams/diag endpoint を使⽤します。 get_metadata 「metadata」サーチプロセッサを使⽤します。 get_typeahead 先⾏⼊⼒を使⽤します。 indexes_edit ファイルサイズやメモリー制限などのインデックス設定を変更します。 input_file ファイルを⼊⼒として追加します。 9 license_tab ライセンスにアクセス、変更します。 license_edit ライセンスを編集します。 list_deployment_client デプロイクライアント設定を表⽰します。 list_deployment_server デプロイサーバー設定を表⽰します。 list_forwarders フォワーダー設定を表⽰します。 list_httpauths ユーザーセッションを表⽰します。 list_inputs ファイル、TCP、UDP、スクリプトからの⼊⼒などの、各種⼊⼒を⼀覧表⽰しま す。 output_file ファイルを出⼒として追加します。 pattern_detect [サーチ] ビューの [パターン] タブの表⽰と使⽤を制御します。 request_remote_tok リモート認証トークンを取得します。 rest_apps_management Python リモート App ハンドラの設定を編集します。 rest_apps_view Python リモート App ハンドラのプロパティを⼀覧表⽰します。 rest_properties_get サービス/プロファイルエンドポイントから情報を取得できます。 rest_properties_set サービス/プロパティエンドポイントを編集します。 restart_splunkd サーバーコントロールハンドラ経由で Splunk を再起動します。 rtsearch リアルタイムサーチを実⾏します。 run_debug_commands debug コマンドを実⾏します。 schedule_search 保存済みサーチのスケジュール、アラートの作成と更新、および⽣成されたアラー ト情報の確認を⾏います。 schedule_rtsearch リアルタイム保存済みサーチのスケジュールを⾏います。この権限を使⽤するに は、当該ユーザーが schedule_search 権限も保有している必要があります。 search サーチを実⾏します。 use_file_operator file サーチ演算⼦を使⽤します。 Splunk Web を使ったロールの追加と編集 ユーザーを作成する場合、それをロールに割り当てることで Splunk Enterprise へのアクセスレベルとユーザー が⾏える作業を設定します。Splunk Enterprise にはそのまま利⽤できるデフォルトのロールが⽤意されていま す。独⾃のロールを作成することもできます。 ロールの詳細および権限の継承⽅法については、「ロールベースのユーザーアクセスについて」を参照してくださ い。 注意: Admin または Power ユーザーから継承されたカスタムロールが、管理アクセスを⾃動的に継承すること はありません。カスタムロールへの管理アクセスの割り当ての詳細は、「カスタムロールへのアクセス制御の追 加」を参照してください。 ロールの追加または編集 Splunk Web でロールを作成または編集するには: 1. [設定] > [アクセス制御] をクリックします。 2. [アクセス制御] ページで、[ロール] をクリックします。 3. [新規] をクリックするか、または選択して既存のロールを編集します。ロール名には⼩⽂字しか使⽤できませ ん。また、スペース、コロン、スラッシュを使⽤することはできません。 4. このロールの [サーチの制限] を指定します。サーチの制限を指定することで、データのアクセス制御および サーチ能⼒を作成、制限します。 サーチ単語の制限: ロールに割り当てられたユーザーに表⽰する (または表⽰しない) データを決定する サーチ⽂字列を作成することができます。このトピックの「サーチフィルタのフォーマット」を参照してく ださい。 サーチ時範囲の制限: このロールがサーチできる期間ウィンドウの⼤きさの制限を指定します。 ユーザーレベルの同時サーチジョブ数の制限 :このロールのユーザーが⼀度に実⾏できるサーチジョブの 最⼤数を指定します。 ユーザーレベルの同時リアルタイムサーチジョブ数の制限: このロールのユーザーが同時に実⾏できる リアルタイムサーチジョブの数を指定します。 ロールレベルの同時サーチジョブ数の制限 :このロールが⼀度に実⾏できるサーチジョブの最⼤数を指定 します。 ロールレベルの同時リアルタイムサーチジョブ数の制限: このロールが同時に実⾏できるリアルタイム サーチジョブの数を指定します。 合計ジョブディスククォータの制限: このロールに割り当てた各ユーザーのサーチジョブ専⽤の、合計 10 ディスクスペースを指定します。 5. [継承] セクションで、新しいロールが権限とプロパティを継承するロールを選択します。複数のロールに割り 当てられたユーザーは、もっとも幅広い権限を持つロールからプロパティを継承します。詳細は、「ロールベース のユーザーアクセスについて」の「ロールの継承」を参照してください。 6. [権限] セクションで、このロールに適⽤する個別の権限を選択します。詳細は、「権限を持つロールの定義に ついて」を参照してください。 7. [デフォルトでサーチするインデックス] で、サーチにインデックスが指定されていない場合に、このロール が⾃動的にサーチするインデックスを指定します。 8. [インデックス] で、ユーザーにサーチを許可するインデックスを選択します。インデックスを最低 1 つ追加す ると、このロールを持つユーザーは、選択されているインデックスに対してのみサーチを⾏うことができます。イ ンデックスを何も指定しない場合、このロールに割り当てられているユーザーはすべてのインデックスをサーチで きます。 9. [保存 ] をクリックします。 サーチフィルタのフォーマット [サーチフィルタ] フィールドには、以下のサーチ⽤語を⼊れることができます。 source= host= index= eventtype= sourcetype= サーチフィールド ワイルドカード 複数の⽤語を使⽤する場合は OR を、サーチ結果をより限定するには AND を使⽤します。 サーチ⽤語に以下の項⽬を⼊れることはできません。 保存済みサーチ 時間演算⼦ 正規表現 Splunk Web が上書きできる任意のフィールドまたは修飾⼦ authorize.conf を使ったロールの追加と編集 authorize.conf を編集することで、ロールを追加または編集することができます。ユーザーを割り当てるロールに より、Splunk へのアクセスレベルや、そのユーザーが Splunk を使って⾏える操作が決まります。ロールと権限 の詳細は、「ロールベースのユーザーアクセスについて」を参照してください。 警告: $SPLUNK_HOME/etc/system/default/authorize.conf でロールを編集、削除しないようにしてください。直接編集 をしてしまうと、管理者権限に⽀障が出る可能性があります。$SPLUNK_HOME/etc/system/local/ 内、またはカスタム アプリケーションディレクトリ $SPLUNK_HOME/etc/apps/ 内にあるこのファイルを編集してください。設定ファイル の⼀般情報については、『管理』マニュアルの「設定ファイルについて」を参照してください。 注意: 分散サーチ設定の場合、権限のニーズが多少異なります。サーチヘッドプーリングを使⽤する場合、サー チヘッドとサーチピアすべてが同じ authorize.conf ファイルセットを使⽤する必要があります。サーチヘッド プーリング⽤に正しく権限を設定するには、「分散サーチでの権限の動作」を参照してください。 ロールの追加 $SPLUNK_HOME/etc/system/local/authorize.conf を使ってロールを追加するための構⽂を以下に⽰します。 [role_<roleName>] <attribute> = <value> <attribute> = <value> ... スタンザの⾒出しにある <roleName> は、ロールに与える名前です。例:security、compliance、ninja。 ロール名には⼩⽂字しか使⽤できません。また、スペース、コロン、スラッシュを使⽤することはできません。 ロールのスタンザには、これらの属性を指定できます。 <capability> = enabled ロールには、任意の数の権限を追加できます。詳細は、「権限を持つロールの定義について」を参照 してください。 デフォルトでは、権限は無効になっています。ロールに権限を追加するには、その権限に「enabled」 を設定します。 importRoles = <role>;<role>;... 設定すると、現在のロールは <role> からすべての権限を継承します。複数のロールに割り当てられた メンバーは、もっとも幅広い権限を持つロールからプロパティを継承します。詳細は、「ロールと ユーザーについて」の「ロールの継承」を参照してください。 複数のロールを指定する場合は、セミコロンで区切ります。 11 srchFilter = <search_string> このフィールドは、きめ細かくアクセス制御を⾏う場合に使⽤します。ロールのサーチは、この式で フィルタリングされます。詳細は、このトピックの「サーチフィルタのフォーマット」を参照してく ださい。 srchTimeWin = <string> このロールが実⾏するサーチの最⼤期間 (秒)。 srchDiskQuota = <int> このロールに所属するユーザーのサーチジョブが利⽤できる最⼤ディスクスペース (MB)。 cumulativeSrchJobsQuota = <number> このロールのすべてのメンバーが保有できる同時実⾏履歴サーチの最⼤数。 注意: ユーザーが複数のロールに属している場合、そのユーザーはまず累積サーチクォータがもっと も⼤きいロールからのサーチを最初に使⽤します。そのロールのクォータがすべて消費されると、次 にクォータが⼩さいロールが使⽤されます。 cumulativeRTSrchJobsQuota = <number> このロールのすべてのメンバーが保有できる同時実⾏リアルタイムサーチの最⼤数。 注意: ユーザーが複数のロールに属している場合、そのユーザーはまず累積サーチクォータがもっと も⼤きいロールからのサーチを最初に使⽤します。そのロールのクォータが完全に消費されると、そ れより少ないクォータを持つロールが使⽤されます。* srchJobsQuota = <int> このロールが利⽤できる同時実⾏サーチの最⼤数。 rtSrchJobsQuota = <number> このロールが利⽤できる同時実⾏リアルタイムサーチの最⼤数。 srchIndexesDefault = <string> インデックスが指定されていない場合にサーチ対象とするインデックスを、セミコロンで区切ったリ スト。 これらのインデックスにワイルドカードを使⽤できますが、「*」は内部インデックスには⼀致しませ ん。 内部インデックスと⼀致させるためには、先頭に「_」を指定します。すべての内部インデックスは 「_*」で表されます。 srchIndexesAllowed = <string> このロールによるサーチを許可するインデックスを、セミコロンで区切ったリスト。 srchIndexesDefault と同じ⽅法でワイルドカードを使⽤できます。 注意: authorize.conf を変更した後は、設定情報を再読み込みするか、Splunk を再起動する必要があります。そ うしないと、[ロール] リストに新しいロールが表⽰されません。設定情報を再ロードするには、Splunk Web の [管理] > [認証] に移動します。こうすることにより、認証キャッシュが更新されますが、現在のユーザーはブー トされません。 サーチフィルタのフォーマット [srchFilter] フィールドには、以下のサーチ⽤語を⼊れることができます。 source= およびホストタグ およびインデックス名 eventtype= およびイベントタイプタグ host= index= sourcetype= サーチフィールド ワイルドカード 複数の⽤語を使⽤する場合は OR を、サーチ結果をより限定するには AND を使⽤します。 サーチ⽤語に以下の項⽬を⼊れることはできません。 保存済みサーチ 時間演算⼦ 正規表現 Splunk Web が上書きできる任意のフィールドまたは修飾⼦ authorize.conf でのロールの作成例 この例ではロール「ninja」を作成します。このロールは、デフォルトの「user」ロールから権限を継承します。 ninja ロールは、デフォルトの「power」とほぼ同じ権限を保有しますが、サーチをスケジュールすることはでき ません。また、以下のように設定されています。 サーチフィルタにより、ninja のサーチは host=foo に限定されています。 ninja には、すべての公開インデックス (アンダースコアで始まらないインデックス) のサーチが許可されて おり、またサーチにインデックスが指定されていない場合は、インデックス mail および main に対してサー チを⾏います。 ninja は、最⼤ 8 つのサーチジョブおよび 8 つのリアルタイムサーチジョブを同時に実⾏することができま す。(これらの数は別個の値です。) ninja は、ジョブに合計 500MB までのディスクスペースを利⽤できます。 [role_ninja] rtsearch = enabled importRoles = user srchFilter = host=foo srchIndexesAllowed = * srchIndexesDefault = mail;main srchJobsQuota = 8 12 rtSrchJobsQuota = 8 srchDiskQuota = 500 管理コンソールと App へのアクセスの設定 local.meta ファイルを利⽤して、Splunk インスタンスの特定の部分へのアクセスを許可したり、制限したりする ことができます。たとえば、以下のような作業を⾏うことができます。 カスタムロールを保有するユーザーが特定の App を利⽤するのをを制限する カスタムロール内のユーザーに管理者レベルの機能へのアクセス権を与える ユーザーへの admin ロールの割り当て Admin ロールに所属する⼀部の管理機能は、その特定のラベル固有のものです。Splunk Web または authorize.conf でロールを設定する場合、そのような能⼒が Admin ロールから⾃動的に継承されることはありま せん。 たとえば、すべての管理機能を継承するけれども、サーチジョブへのアクセスが制限されているカスタムロールを 作成する場合を考えてみましょう。このためには、新しいロール「SpecialAdmin」を作成し、Admin のすべて の権限を継承するようにそれを設定し (「権限を持つロールの定義について」を参照)、次にサーチ制限を設定しま す (「ロール・ベースのユーザー・アクセスの設定について」を参照)。 「SpecialAdmin」には、あなたが Admin ロールに割り当てた各権限を保有します。ただし、以下の事項も含め て、Admin と同じ管理⽤ページへのアクセス権は、⾃動的には与えられません。 システム関連の機能:システム設定およびクラスタ設定の表⽰/変更、ライセンスの表⽰/更新、Splunk の 再起動。 データ機能:データ⼊⼒の表⽰/追加、転送と受信の設定、インデックスの管理、レポートの⾼速化。 分散環境:分散サーチの設定、デプロイクライアントの表⽰、サーバーステータス。 ユーザーと認証:LDAP 設定、ユーザー (⾃⼰が保有しているものを除く)、ロールの管理。 特定の App へのアクセスの制限 local.meta ファイルを使って、アクセスを制限することもできます。 たとえば、1 つのダッシュボードビューへのアクセスのみを許可するように、ユーザーを制限する場合を考えてみ ましょう。このためには、そのビュー⽤の App を作成し、ユーザーのロールにその App を割り当てます。その App の表⽰をロールに許可するには、meta.local を使⽤する必要があります。 local.meta ファイルを使ったアクセスの追加と削除 local.meta ファイルを編集して新しいロールを追加することで、アクセスを許可または制限することができま す。 1. local.meta ファイルを探します。メインサーチページ (例:管理者コントロール) へのアクセス権を編集する場合 は、$SPLUNK_HOME/etc/system/metadata/ を参照します。特定の App へのアクセスを編集する場合 は、$SPLUNK_HOME/etc/apps/<app_name>/metadata/ を参照します。⽬的の場所のディレクトリにこれらのファイルがな い場合は、デフォルト版の default.meta ファイルをコピーしてファイル名を変更できます。 注意: default.meta ファイルの値を直接編集しないようにしてください 。このファイルのデフォルト値は、将来 的にも必要となります。 2. local.meta ファイルの、⽬的のスタンザに新たなロール名を追加します。 デフォルトのスタン ザ [manager/accesscontrols] access = read : [ * ], write : [ admin, power ] [views] [manager/accesscontrols] access = read : [ * ], write : [ admin ] 意味 すべてのユーザーにこの App のコンテンツの参照、または Splunk 管理ページのアク セス機能を許可します (現在のディレクトリによる)。他のメタデータの設定が優先さ れる場合を除き、この App でのオブジェクトの共有は、admin および power ユー ザーにのみ許可してください。 Splunk 管理ページへのアクセス制御を決定します。 3. 変更作業が完了したら、Splunk を再起動します。 例 例 1: 新しいロール「usermanager」は、ユーザーからの権限のみを継承し、サーチやインデックスは継承しま せん。⽬的は、データにはアクセスできず、ユーザーアカウントの作成と管理⽬的でのみ使⽤されるロールを作成 することです。 このようなロールを作成するために、以下のスタンザを編集します。 [manager/accesscontrols] 13 access = read : [ admin ], write : [ admin ] 以下の項⽬を含めます。 [manager/accesscontrols] access = read : [ admin, usermanager ], write : [ admin, usermanager ] これで、「usermanager」に Splunk 管理での [アクセス制御] ページの内容の表⽰、編集権限が与えられまし た。 例 2: ロール「userview」を有効にして、ページを表⽰できるけれども編集できないようにするには、ロールに 読み取り値 (read) のみを追加します。 [manager/accesscontrols] access = read : [ admin, userview, usermanager ], write : [ admin, usermanager ] 各ロールに [管理] ページへの読み取りアクセスを許可するためにワイルドカードを使⽤することもできます。 [manager/accesscontrols] access = read : [ * ], write : [ admin ] 例 3: 指定した営業データのみを読み込めるユーザーのサブセットを設定したいと考えています。この⽬的を達 成するために、ダッシュボード⽤の App を作成して、次に新しいロール「salesusers」を作成します。 次に App ディレクトリ内の す。 local.meta ファイルで (default.meta ファイルから作成)、以下のスタンザを編集しま [viewstates] access = read : [ * ], write : [ * ] to read: [viewstates] access = read : [ salesusers ], write : [ admin ] 既存のユーザーやロールの検索 まず、Splunk Web で既存のユーザーまたはロールを探し、メインメニューで [システム] をクリックして、[ア クセス制御] を選択して [アクセス制御] ページに移動します。そこから、[ユーザー] または [ロール] をクリッ クして、ユーザーやロールをサーチできます。Splunk サーチはワイルドカードをサポートしています。 デフォルトでは、利⽤可能なすべてのフィールドに対して、⼊⼒した⽂字列がサーチされます。特定のフィールド 内のみをサーチする場合は、そのフィールドを指定します。 たとえば、メールアドレスのみをサーチする場合は、「email=<メールアドレスまたはその⼀部>」と⼊⼒しま す。フルネームのフィールドのみをサーチする場合は、「realname=<名前またはその⼀部>」と⼊⼒します。特 定のロールを持つユーザーを検索する場合は、「roles=」を使⽤します。 すべてのユーザーアカウントの削除 インストールされている Splunk からすべてのユーザーデータ (ユーザーアカウント) を削除するには、./splunk clean に userdata 引数を指定します。これにより、Splunk のデフォルトアカウント (admin、power、user) 以外 のすべてのユーザーアカウントが削除されます。 警告: ユーザーデータの削除を元に戻すことはできません。誤ってユーザーデータを削除してしまった場合は、 ⼿動でアカウントを再追加する必要があります。 システム内のすべてのユーザーアカウントを削除するには: ./splunk clean userdata システム内のすべてのユーザーアカウントを削除して、Splunk による確認のメッセージの表⽰をスキップ するには: ./splunk clean userdata -f Splunk ナレッジオブジェクトへのアクセスの保護 Splunk を使⽤するにつれて、イベントタイプ 、タグ 、ルックアップ 、フィールド抽出 、ワークフローアク ション 、保存済みサーチ などの、さまざまな Splunk ナレッジオブジェクト が作成されていきます。Splunk Web では、Splunk 環境内のナレッジオブジェクトへのアクセスを制限または拡張することができます。以下の 14 ⽬的に利⽤できます。 すべての App のユーザーに対してオブジェクトを利⽤できるようにする。 特定の App のユーザーに対してオブジェクトを利⽤できるようにする。 ユーザーロールを使って、オブジェクトへのアクセスを制限する。 オブジェクトを無効化または削除する。 ユーザーに、⾃⼰が保有していないオブジェクトの共有や削除を許可する。 ナレッジオブジェクトのセキュリティの詳細は、『ナレッジ管理』マニュアルの「ナレッジオブジェクト権限の管 理」および「ナレッジオブジェクトの無効化または削除」を参照してください。 Splunk Enterprise のビルトイン認証を使ったユー ザーの設定 Splunk Enterprise のネイティブ認証を使ったユーザー認証の設定 Splunk Enterprise のネイティブ認証 機能により、システムのユーザーを⼿軽に設定することができます。 Splunk Enterprise には、3 種類のユーザー設定⼿段が⽤意されていますが、ネイティブ認証が他の外部システム よりも常に優先されます。ユーザーの認証⼿段の順位を以下に⽰します。 1. Splunk Enterprise ネイティブ認証。 2. LDAP またはスクリプト認証 (有効な場合)。詳細は、「LDAP によるユーザー認証の設定」および「外部シス テムによるユーザー認証の設定」を参照してください。 注意: LDAP およびスクリプト認証を同時に⾏うことはできません。 新しいユーザーを作成し、ロールベースのアクセス制御システムがあるロール にそれらのユーザーを割り当てる には、2 種類の⽅法があります。 Splunk Web を使ってユーザーを作成し、ロールを割り当てる。詳細は、「Splunk Web を使ったユーザー の設定」を参照してください。 CLI を使ってユーザーを作成し、次に Splunk Web を使ってロールに割り当てる。詳細は、「CLI を使っ たユーザーの設定」を参照してください。 ユーザーとロールの作成時の重要な命名ガイドライン ネイティブ認証に保管するユーザーに、スペース、コロン、またはスラッシュを使⽤することはできません。名前 の⼤⽂字と⼩⽂字は区別されません。例えば、「Jacque」、「jacque」、「JacQue」はすべて同じものとして Splunk Enterprise に認識されます。 ロール名には⼩⽂字しか使⽤できません。また、スペース、コロン、スラッシュを使⽤することはできません。 Splunk Web を使ったユーザーの設定 Splunk Web でユーザーとロールを設定するには: 1. [設定] > [ユーザーと認証] > [アクセス制御] に移動します。 3. [ユーザー] をクリックします。 4. [新規] をクリックするか、または編集する既存のユーザーを選択します。 5. ユーザーの情報を指定または変更します。以下のような情報を指定することができます。 フルネーム。 メールアドレス。 タイムゾーン。これにより、イベントやその他の情報を、各⾃のタイムゾーンで表⽰することができます。 デフォルト App。これは、ユーザーのロールからデフォルトで継承されるデフォルト App の設定に優先し ます。 パスワード。 6. 既存のロールにユーザーを割り当てて、[保存] をクリックします。 ユーザーが Splunk で何にアクセスできるのかを定義した、ユーザー専⽤のロールを作成することもできます。作 成したら、そのロールにユーザーを割り当てます。ロールの詳細は、「ロールベースのユーザーアクセスについ て」を参照してください。 ユーザー設定の詳細は、Splunk Enterprise の『管理ガイド』を参照してください。 CLI を使ったユーザーの設定 CLI では、add user コマンドを使⽤します。以下にいくつかの例を⽰します。 新たな管理ユーザーにパスワード「changeme2」を追加するには: ./splunk add user admin2 -password changeme2 -role admin -auth admin:changeme 既存のユーザーのパスワードを「fflanda」に変更するには: 15 ./splunk edit user admin -password fflanda -role admin -auth admin:changeme 重要: パスワードに、シェルに解釈される特殊⽂字を使⽤する場合 (例:'$' または '!')、エスケープ処理を⾏う か、または単⼀引⽤符で囲む必要があります。例: ./splunk edit user admin -password 'fflanda$' -role admin -auth admin:changeme または ./splunk edit user admin -password fflanda\$ -role admin -auth admin:changeme Splunk Web によるロールへのユーザーの追加 ユーザーを、デフォルトのロールまたは独⾃に作成したカスタムロールに追加することができます。詳細は、 「ロールベースのユーザーアクセスについて」を参照してください。 Splunk Web を使ってロールにユーザーを追加するには: 1. メインメニューから、[設定] > [アクセス制御] > [アクセス制御] をクリックします。 2. [ユーザー] をクリックします。 3. 既存のユーザーを編集するか、または新しいユーザーを作成します。 4. [ロール] リストから、割り当てるロールを選択します。authorize.conf 内に作成された任意のカスタムロールが ここに表⽰されます。 LDAP によるユーザー認証の設定 LDAP によるユーザー認証の設定 Splunk は、3 種類の認証 システムをサポートしています。 Splunk にビルトインされている独⾃のシステム。「Splunk 認証システムを使ったユーザー認証の設定」を 参照してください。 ここで説明する LDAP。 外部認証システム (PAM や RADIUS など) を使⽤するためのスクリプトによる認証 API。「外部システム を使ったユーザー認証の設定」を参照してください。 Splunk の LDAP 認証の設定について Splunk では、LDAP ユーザー/グループのユーザーとロール設定が可能です。1 つまたは複数の LDAP サーバー を設定して、サーバーから Splunk 内で作成したロールに、ユーザーとグループをマップすることができます。 複数の LDAP サーバーの設定については、「Splunk が複数の LDAP サーバーと連携する仕組み」を参照してく ださい。 LDAP を設定する前に、「LDAP の前提条件と検討事項」を参照してください。 Splunk で LDAP を使⽤するための設定⽅法 Splunk で LDAP を利⽤するための主な設定ステップを以下に⽰します。 1. 1 つまたは複数の LDAP ストラテジーを設定します (⼀般的には、1 台の LDAP サーバー当たり 1 つのストラ テジーを設定)。 2. LDAP グループを 1 つまたは複数の Splunk ロールにマップします。 3. 複数の LDAP サーバーがある場合は、各サーバーへの接続順序を指定します。 これらのステップを実施するには、Splunk Web を利⽤するか、または設定ファイルを編集します。詳細は、 「Splunk Web による LDAP の設定」または「設定ファイルによる LDAP の設定」を参照してください。 認証の優先度 Splunk のビルトインシステムは、他の外部システムよりも常に優先されます。Splunk によるユーザーの認証順 序を以下に⽰します。 1. Splunk ビルトイン認証 2. LDAP またはスクリプト認証 (これらの⼿段が有効になっている場合)。スクリプト認証の詳細は、「外部シス テムによるユーザー認証の設定」を参照してください。 Answers 何か質問がありますか?「Splunk Answers」から、Splunk コミュニティに寄せられた、Splunk での LDAP 認 証の使⽤⽅法に関する質問と回答をご覧ください。 16 LDAP を使った Splunk ユーザーロールの管理 Splunk で LDAP 認証を使⽤するように設定するには、まず各 LDAP サーバーに対する Splunk ストラテジーを 作成し、次に Splunk のロールをサーバーのグループにマップします。ユーザーのログイン時には、Splunk が サーバーに問い合わせて、当該ユーザーを検索します。ユーザーには、そのユーザーがメンバーとなっている LDAP グループに対応するロールに基づいて、ユーザー権限が与えられます。 ユーザー権限を変更する場合、さまざまな⼿段を利⽤することができます。 ユーザーグループの権限を変更するために、LDAP グループを別の Splunk ロールにマップし直すことがで きます。また、ロール⾃体を更新して、別の権限を指定することもできます。この作業は Splunk で⾏いま す。 個別のユーザーの権限を変更するために、そのユーザーを別の Splunk ロールにマップされた LDAP グルー プに移動することができます。この作業は、LDAP サーバー上で⾏います。 その他のユーザー管理作業を以下に⽰します。 ユーザーを Splunk ロールに追加するには:まず Splunk Web で、Splunk ロールを LDAP グループに マップしたことを確認します。次に LDAP サーバー上で、ユーザーを LDAP グループに追加します。 ユーザーを Splunk ロールから削除するには: LDAP サーバー上で、対応する LDAP グループからユー ザーを削除します。 ユーザーは、複数のロールのメンバーシップを保有することができます。その場合、それらの任意のロールが利⽤ できるすべての権限が与えられます。たとえば、ユーザーが docs と eng グループの両⽅のメンバーで、docs が 「user」に、eng が「admin」にマップされている場合、そのユーザーは「user」と「admin」ロールに割り当 てられているすべての権限を取得します。 注意: ユーザーが Splunk にログインする場合、Splunk は⾃動的に LDAP メンバーシップ情報をチェックしま す。ユーザーの追加/削除時に、認証設定を再ロードする必要はありません。 LDAP の前提条件と検討事項 Splunk での LDAP の使⽤を設定する前に、ここの説明に従って準備作業を⾏ってください。 ユーザーとグループのベース DN の決定 Splunk で LDAP 設定をマップする前に、ユーザー/グループベース DN または識別名を確認してください。DN は、認証情報が保管されているディレクトリの場所です。 ユーザーのグループメンバーシップ情報が個別のエントリに保持されている場合は、グループ情報が保管されてい るディレクトリ内のサブツリーを識別する、個別の DN を⼊⼒します。ユーザーとグループは、この DN 下のす べてのサブノード上で再帰的に検索されます。LDAP ツリーにグループエントリがない場合は、グループベース DN にユーザーベース DN と同じ値を設定して、ユーザーを⾃⼰のグループとして処理することができます。こ のためには、後述する設定作業が必要になります。 この情報が分からない場合は、LDAP 管理者に⽀援を依頼してください。 注意: Splunk を Active Directory と統合する際に最良の結果を得るために、グループベース DN はユーザー ベース DN と別個の階層に配置するようにしてください。 その他の検討事項 Splunk で LDAP を使⽤する際には、以下の事項に注意してください。 Splunk Web および authentication.conf 内のエントリでは、⼤⽂字と⼩⽂字が区別されます。 Splunk のネイティブ認証を利⽤してローカルに作成されたユーザーは、同名の LDAP ユーザーよりも優先 されます。たとえば、LDAP サーバーにユーザー名属性 (たとえば、cn または uid) を持つユーザー 「admin」があり、同名のデフォルト Splunk ユーザーが存在している場合、その Splunk ユーザーが優先 されます。この場合、ローカルのパスワードのみが受け付けられます。また、ログイン時には、ローカル ユーザーに与えられているロールが有効になります。 Splunk Web がロールへのマッピングとして表⽰できる LDAP グループ数は、LDAP サーバーがクエリに 対して返すことができるグループ数に制限されています。サーチ要求サイズ制限 とサーチ要求時間制限 設 定でこれを設定することができます。 不要なグループの表⽰を防⽌するには、groupBaseFilter を使⽤します。例: groupBaseFilter = (|(cn=SplunkAdmins)(cn=SplunkPowerUsers)(cn=Help Desk)) ロールを最⼤値以上のグループにマップする必要がある場合は、authentication.conf を直接編集するこ とができます。この例では、「roleMap_AD」が Splunk ストラテジー名を⽰しています。各属性/値 のペアが、Splunk ロールを 1 つまたは複数の LDAP グループにマップしています。 [roleMap_AD] admin = SplunkAdmins1;SplunkAdmins2 power = SplunkPowerUsers user = SplunkUsers Splunk が複数の LDAP サーバーと連携する仕組み Splunk は、ユーザーの認証時に複数の LDAP サーバーに対して検索することができます。LDAP サーバーを設 定するには、それぞれの LDAP サーバーに対して 1 つずつ「ストラテジー」を設定します。 17 ストラテジーを作成したら、Splunk が LDAP ユーザーを検索する際にそれらのストラテジーに対してクエリを ⾏う順番を指定することができます。検索順序を指定しない場合は、ストラテジーが作成された順番に基づいてデ フォルトの「接続順序」が割り当てられます。 LDAP ストラテジーの設定⼿順については、「Splunk Web による LDAP の設定」または「設定ファイルによる LDAP の設定」を参照してください。 検索中の接続順序の仕組み 認証時には、指定した接続順序で、サーバーに対して作成したストラテジーに基づいて検索が⾏われます。サー バー上にユーザーが⾒つかると、検索を終了して、ユーザーの資格情報を取得します。検索順序に従って残りの サーバー上に資格情報があっても、それらは無視されます。 例えば、A、B、C の順番で三つのストラテジ―を設定・有効化する場合、Splunk は同じ A、B、C という順番で サーバーをサーチします。ユーザーが Aで⾒つかると、検索を停⽌します。B や C にユーザーが存在しているか どうかは考慮されません。A にあるユーザーの資格情報のみが使⽤されます。A にユーザーが⾒つからなかった 場合は、残りのサーバーに対して検索が⾏われます。まず B が、次に C が検索されます。 後ほどストラテジー A を無効にした場合は、残りのストラテジーが B、C の順序で検索されます。 接続順序はいつでも変更することができます。変更するには、Splunk Web を使⽤するか、 「authentication.conf」仕様ファイルの説明に従って、authSettings 属性内のストラテジーの順序を変更します。 本ファイルを LDAP に合わせて編集する⽅法の詳細については、「authentication.conf の編集」を参照してくだ さい。 重要: Splunk のビルトイン認証を利⽤してローカルに作成されたユーザーは、同名の LDAP ユーザーよりも優 先されます。詳細は、「ユーザー認証について」を参照してください。 Splunk Web による LDAP の設定 このセクションでは、Splunk Web を使った LDAP の設定⽅法について説明していきます。authentication.conf を直接編集して LDAP を設定する場合は、「設定ファイルによる LDAP の設定」を参照してください。 Splunk Web を使った LDAP の設定作業は、主に 3 つのステップから成り⽴っています。 1. LDAP ストラテジーを作成します。 2. LDAP グループを Splunk ロールにマップします。 3. 接続順序を指定します (複数の LDAP サーバーがある場合)。 LDAP ストラテジーの作成 LDAP ストラテジーを作成するには: 1. [設定] > [ユーザーと認証] > [アクセス制御] に移動します。 3. [認証⽅法] をクリックします。 4. [LDAP] を選択します。 5. [LDAP を使⽤してグループをマップする] をクリックします。[LDAP ストラテジー] ページに移動しま す。 6. [新規] をクリックします。[新規追加] ページに移動します。 7. 設定の [LDAP ストラテジー名] を⼊⼒します。 8. LDAP サーバーのホスト 名を⼊⼒します。⼊⼒するホスト名は、Splunk サーバーが解決できなければなりませ ん。注意:現在の所、Windows で Splunk は IPv6 アドレス形式をサポートしていません。 9. LDAP サーバーに接続するために Splunk が使⽤する [ポート] を⼊⼒します。 デフォルトで LDAP サーバーは、TCP ポート 389 で待機しています。 LDAPS (SSL を使⽤した LDAP) の場合は、デフォルトでポート 636 が使⽤されます。 10. SSL を有効にするには、[SSL 有効] を選択します。 セキュリティのために、この設定を使⽤することをお勧めします。 また、LDAP サーバーでも SSL を有効にする必要があります。 11. [バインド DN] を⼊⼒します。 LDAP サーバーにバインドするために⽤いられる識別名です。 ⼀般的には管理者ですが、必ずしもそうである必要はありません。このユーザーには、取得するすべての LDAP ユーザー/グループエントリに対する読み取りアクセスが必要です。 匿名バインドで⼗分な場合は、空欄にしてください。 12. バインドするユーザーの [バインド DN パスワード] を⼊⼒、再⼊⼒します。 13. [ユーザーベース DN] を⼊⼒します。複数のユーザーベース DN を指定する場合は、セミコロンで区切って ください。 18 Splunk はこの属性を使ってユーザー情報を検索します。 認証を機能させるために、この属性を設定する必要があります。 14. ユーザーをフィルタリングするオブジェクトクラスの、[ユーザーベースフィルタ] を⼊⼒します。 適切なユーザーのみを返す場合に使⽤することをお勧めします。例:(department=IT)。 デフォルト値は空です。この場合、ユーザーエントリのフィルタリングは⾏われません。 15. ユーザー名を含む [ユーザー名属性] を⼊⼒します。 ユーザー名に空⽩⽂字を⼊れることはできません。 Active Directory の場合、⼀般的にこれは sAMAccountName になりますが、cn のような他の属性を認証するこ ともできます。 他の⼤部分の設定で、値 uid を利⽤できます。 16. ユーザーの [実名属性] (共通名) を⼊⼒します。 ⼀般的な値は、displayName または cn (共通名) になります。 17. [メール属性] を⼊⼒します。 18. [グループマッピング属性] を⼊⼒します。 これは、グループエントリがそのメンバーを定義するために使⽤するユーザー属性です。 デフォルトは、Active Directory の dn になります。この属性は、ユーザー DN に加えて他の属性を使って グループをマップしている場合にのみ設定してください。 たとえば、ユーザーをグループにマップするために⼀般的に⽤いられる属性は dn になります。 19. [グループベース DN] を⼊⼒します。複数のグループベース DN を指定する場合は、セミコロンで区切って ください。 これは、LDAP 内のユーザーグループの場所になります。 LDAP 環境にグループエントリがない場合は、各ユーザーを独⾃のグループとして取り扱うことができま す。 groupBaseDN に userBaseDN と同じ値を設定してください。この場合、ユーザーと同じ場所でグ ループを検索することになります。 次に、groupMemberAttribute と groupMappingAttribute に、userNameAttribute と同じ属性を設 定します。この場合、エントリがグループとして処理されるときに、ユーザー名の値がその唯⼀のメ ンバーとして使⽤されます。 また、groupNameAttribute にも userNameAttribute と同じ値を設定しなければならないことがあり ます。 注意: Active Directory と統合する際に最良の結果を得るために、グループベース DN はユーザーベース DN と 別個の階層に配置するようにしてください。 20. 静的グループをフィルタリングするオブジェクトクラスの、[静的グループサーチフィルタ] を⼊⼒します。 適切なグループのみを返すために使⽤することをお勧めします。例: (|(objectclass=groupofNames)(objectclass=groupofUniqueNames)) デフォルト値は空です。この場合、静的グループのフィルタリングは⾏われません。 21. [グループ名属性] を⼊⼒します。 これは、値がグループ名を保管しているグループエントリ属性になります。 ⼀般的には cn になります。 22. [静的メンバー名属性] を⼊⼒します。 これは、値がグループのメンバーであるグループ属性です。 ⼀般的には、member、uniqueMember、または memberUid になります。 22. ネスト化グループを展開する場合は、[ネスト化グループ] を選択します。 これは、Splunk が memberof 属性を使って、ネスト化されたグループをデプロイするかどうかを⽰しま す。メンバーを解決するために memberof 属性を使⽤しているネスト化グループがある場合にのみ、選択し てください。OpenLDAP の場合は、「memberof」オーバーレイを明⽰的に有効にする必要があります。 23. 動的グループ (ある場合) を取得するために、[動的グループサーチフィルタ] を⼊⼒します。 動的グループが Splunk に返されるように、この値は動的グループ定義のオブジェクトクラスと⼀致してい なければなりません。例: (objectclass=groupOfURLs) デフォルト値は空です。この場合、認証時に Splunk は動的グループエントリを検索しません。 24. [動的メンバー名属性] を⼊⼒します。 これは、メンバーの定義に LDAP 検索 URL 形式 (ldap:///o=Acme, ⽤するグループ属性です。 ⼀般的には memberURL になります。 c=US??sub?(objectclass=person) など) を使 25. [詳細設定] を選択した場合は、その他の各種オプションを設定することもできます。 匿名バインドでのみ紹介を有効にする この設定はデフォルトで有効になっています。紹介が不要な場合は、これをオフにしてください。 19 Splunk は匿名バインドの紹介のみを追跡できます。また、LDAP サーバーでも匿名サーチを有効にす る必要があります。 ⻑い LDAP 検索タイムアウトが発⽣し (Active Directory などで)、splunkd.log に ScopedLDAPConnection の「Operations error」が記録される場合は、紹介に関連する問題である 可能性があります。 サーチ要求サイズ制限 パフォーマンス関連の問題を回避するために、サーチ要求のサイズ制限を設定することができます。 Splunk が LDAP サーバーにサーチ要求を⾏うと、サーバーから最⼤で指定された数のエントリが返 されます。数百万⼈ものユーザーが存在する⼤規模デプロイ環境で、この値を⼤きくすると、LDAP ストラテジー設定のサーチフィルタ設定によっては応答時間が⻑くなることがあります。この限度に 達すると、splunkd.log に size limit exceeded メッセージが記録されます。 [サーチ要求時間制限] と [サーチ要求サイズ制限] の値は、splunkweb タイムアウトプロパティ値 (「ユーザーセッションタイムアウトの設定」を参照) と連携して指定する必要があります。Splunk コ ンソールに表⽰されないグループがある場合は、これらの制限のいずれかが原因で除外されている可 能性があります。必要に応じてこれらのプロパティの値を調整してください。 要求サイズ制限に 1000 以上の値を設定する場合は、要求サイズ制限に設定したユーザー数に対応で きるように limits.conf 内の max_users_to_precache を変更する必要があります。 サーチ要求時間制限 パフォーマンス関連の問題を回避するために、サーチ要求の時間制限を設定することができます。 Splunk が要求を⾏うと、LDAP サーバーは指定秒数で検索を完了します。数百万⼈ものユーザーが存 在する⼤規模デプロイ環境で、この制限に⼤きな値を設定すると、Splunk Web でタイムアウトが発 ⽣する可能性があります。この限度に達すると、splunkd.log に time limit exceeded メッセージが記録 されます。 [サーチ要求時間制限] と [サーチ要求サイズ制限] の値は、splunkweb タイムアウトプロパティ値 (「ユーザーセッションタイムアウトの設定」を参照) と連携して指定する必要があります。Splunk コ ンソールに表⽰されないグループがある場合は、これらの制限のいずれかが原因で除外されている可 能性があります。必要に応じてこれらのプロパティの値を調整してください。 ネットワークソケットタイムアウト このプロパティは、複数のストラテジー設定がある環境で、ネットワークの輻輳が原因でいずれかの LDAP サーバーに到達不可能、またはサーバーの応答時間が⻑すぎる場合の、認証チェーン内のルー プを回避するために⽤いられます。指定された秒数の待機後、次に利⽤できるストラテジー (ある場 合) から認証プロセスが続⾏されます。 LDAP ストラテジーを最初に作成する時に、Splunk は LDAP サーバー/ポートと他のパラメータを検 証します。その時に、LDAP サーバーが停⽌している、またはいずれかのパラメータを検証できない 場合、LDAP ストラテジーは作成されません。 26. [保存 ] をクリックします。 新しい LDAP グループの Splunk ロールへのマップ LDAP サーバー経由で認証を⾏うように Splunk を設定したら、LDAP グループを Splunk ロールにマップしま す。グループを使⽤しない場合は、ユーザーを個別にマップすることができます。 注意: ユーザーまたはグループのどちらかをマップすることができます。両⽅をマップすることはできません。 グループを使⽤する場合、Splunk にアクセスさせるすべてのユーザーが、適切なグループのメンバーでなければ なりません。グループは、それがメンバーとなっている最⾼レベルのロールから権限を継承します。 すべてのユーザーは、Splunk 管理の [ユーザー] ページに表⽰されます。Splunk Web でロールをグループに割 り当てるには: 1. メインメニューで、[システム] > [ユーザーと認証] > [アクセス制御] を選択します。 2. [アクセス制御] ページで、[認証⽅法] をクリックします。 3. [LDAP] ラジオボタンを選択して、[LDAP を使⽤してグループをマップする] をクリックします。[LDAP ストラテジー] ページに移動します。 4. 特定のストラテジーの [アクション] 列の [グループのマップ] をクリックします。[LDAP グループ] ペー ジに移動します。ページの右上にあるサーチフィールドを使って、グループのリストを調整することができます (例:特定のユーザーを含むグループを表⽰)。 5. グループ名をクリックします。マッピング⽤ページに移動します。このページには、利⽤可能なロールのリス ト、およびグループの LDAP ユーザーのリストが表⽰されています。 6. ロールをグループにマップするには、[利⽤可能なロール] リスト内の、ロールの左側にある⽮印をクリックしま す。この操作により、グループが [選択されたロール] リストに移動します。グループに複数のロールをマップす ることができます。 7. [保存 ] をクリックします。[LDAP グループ] ページに戻ります。 8. Splunk ロールを割り当てる各グループに対して、このプロセスを繰り返します。 サーバーの接続順序の指定 複数の LDAP ストラテジーを有効にしている場合、「Splunk が複数の LDAP サーバーと連携する仕組み」で説 明しているように、Splunk がユーザーを検索するためにサーバーに接続する順序を指定することができます。 デフォルトでは、サーバーを有効にした順序に検索が⾏われます。接続 (検索) 順序を変更するには、各ストラテ ジーのプロパティを個別に編集する必要があります。 1. メインメニューで、[システム] > [ユーザーと認証] > [アクセス制御] を選択します。 2. [認証⽅法] をクリックします。 20 3. [LDAP] ボタンを選択します。 4. [LDAP を使⽤してグループをマップする] をクリックします。[LDAP ストラテジー] ページに移動しま す。 5. 接続順序を指定するストラテジーをクリックします。この操作により、ストラテジーのプロパティページに移動 します。 6. ページの上部にある [接続順序] フィールドを編集します。このフィールドは、複数のストラテジーを有効にし た場合にのみ表⽰されます。 注意: 最初にストラテジーを作成する時点では、[接続順序] フィールドは表⽰されません。後ほどプロパティを 編集する時にのみ表⽰されます。また、ストラテジーが無効になっている場合、フィールドは灰⾊表⽰になりま す。 7. [保存 ] をクリックします。 8. 有効順序を変更するその他の有効なストラテジーに対しても、同じプロセスを繰り返します。 Splunk Web を使った LDAP グループの Splunk ロールへのマップ LDAP サーバー経由で認証を⾏うように Splunk を設定した場合、LDAP グループを Splunk ロールにマップす ることができます。グループを使⽤しない場合は、LDAP ユーザーを個別にマップすることもできます。 Splunk Web での LDAP グループの設定については、このマニュアルの「Splunk Web による LDAP の設定」 を参照してください。 注意: ユーザーまたはグループのどちらかをマップすることができます。両⽅をマップすることはできません。 グループを使⽤する場合、Splunk にアクセスさせるすべてのユーザーが、適切なグループのメンバーでなければ なりません。グループは、それがメンバーとなっている最⾼レベルのロールから権限を継承します。 すべてのユーザーは、Splunk 管理の [ユーザー] ページに表⽰されます。Splunk Web でロールをグループに割 り当てるには: 1. Splunk Web で [設定] をクリックします。 2. [ユーザーと認証] セクションで、[アクセス制御] をクリックします。 3. [認証⽅法] をクリックします。 4. [LDAP] ボタンを選択します。 5. [LDAP を使⽤してグループをマップする] をクリックします。[LDAP ストラテジー] ページに移動しま す。 6. 特定のストラテジーの [アクション] 列の [グループのマップ] をクリックします。[LDAP グループ] ペー ジに移動します。ページの右上にあるサーチフィールドを使って、グループのリストを調整することができます (例:特定のユーザーを含むグループを表⽰)。 7. グループ名をクリックします。マッピング⽤ページに移動します。このページには、利⽤可能なロールのリス ト、およびグループの LDAP ユーザーのリストが表⽰されています。 8. ロールをグループにマップするには、[利⽤可能なロール] リスト内の、ロールの左側にある⽮印をクリックしま す。この操作により、グループが [選択されたロール] リストに移動します。グループに複数のロールをマップす ることができます。 9. [保存 ] をクリックします。[LDAP グループ] ページに戻ります。 10. Splunk ロールを割り当てる各グループに対して、このプロセスを繰り返します。 設定ファイルによる LDAP の設定 Splunk Web を使って LDAP を設定する代わりに、authentication.conf ファイルを直接編集することもできま す。 この例では、authentication.conf の設定⼿順を紹介していきます。Splunk Web を使って LDAP を設定する場合 は、「Splunk Web による LDAP の設定」を参照してください。 注意: LDAP 認証の設定後、デフォルトの Splunk 認証に変更する場合、もっとも簡単な⽅法は既存の authentication.conf ファイルを認識できないようにして (例:名前を authentication.conf.disabled に変更する)、 Splunk を再起動することです。 authentication.conf ファイルの最後には、その他の例が記載されています。 の authentication.conf を編集します。設定ファイルの⼀般情報については、『管理 マニュアル』の「設定ファイルについて」を参照してください。 $SPLUNK_HOME/etc/system/local/ 認証タイプとストラテジー名の設定 デフォルトで Splunk は、⾃⼰の認証タイプを使⽤しています。[authentication] スタンザの認証タイプを LDAP に変更してください。 21 [authentication] authType = LDAP authSettings = ldaphost1,ldaphost2 以下の事項に注意してください。 を設定することで、LDAP を有効にします。 属性は、1 つまたは 複数の LDAP ストラテジーを⽰します。後述するように、各ストラテジー が独⾃のスタンザを保有します。 authType = LDAP authSettings LDAP ストラテジースタンザの設定 各 LDAP ストラテジーに、独⾃のスタンザが必要です。ストラテジーのスタンザの属性/値のペアに、LDAP 値を マップしてください。 注意: 現在の所、Windows で Splunk は IPv6 アドレス形式をサポートしていません。 「ldaphost1」ストラテジーのスタンザの例を以下に⽰します (authSettings 属性の前半に指定)。 [ldaphost1] host = ldaphost1.domain.com port = 389 SSLEnabled = 0 bindDN = cn=bind_user bindDNpassword = bind_user_password groupBaseDN = ou=Groups,dc=splunk,dc=com groupBaseFilter = (objectclass=*) groupMappingAttribute = dn groupMemberAttribute = uniqueMember groupNameAttribute = cn realNameAttribute = displayName userBaseDN = ou=People,dc=splunk,dc=com userBaseFilter = (objectclass=*) userNameAttribute = uid 注意: Active Directory と統合する際に最良の結果を得るために、グループベース DN はユーザーベース DN と 別個の階層に配置するようにしてください。 複数の LDAP ストラテジーの設定 「Splunk が複数の LDAP サーバーと連携する仕組み」で説明しているように、Splunk は複数の LDAP サー バーにまたがって検索することができます。そのように設定するには、カンマ区切り形式のストラテジーリストに authSettings 属性を、Splunk がクエリする順番に設定します。次に、各ストラテジーに対して個別のスタンザを 指定します。 グループのロールへのマップ Splunk ロールをストラテジーの LDAP グループにマップするには、そのストラテジーの roleMap スタンザを設定 する必要があります。各ストラテジーに、独⾃の roleMap スタンザが必要になります。この例では、 「ldaphost1」ストラテジー内のグループに対してロールをマップします。 [roleMap_ldaphost1] admin = SplunkAdmins itusers = ITAdmins ユーザーのロールへの直接割り当て ユーザーを直接 Splunk ロールに割り当てる必要がある場合は、groupBaseDN に userBaseDN の値を設定します。ま た、groupMappingAttribute、groupMemberAttribute、および groupNameAttribute の属性に、userNameAttribute と同じ属 性を設定します。例: [supportLDAP] SSLEnabled = 0 bindDN = cn=Directory Manager bindDNpassword = ######### groupBaseDN = ou=People,dc=splunksupport,dc=com groupBaseFilter = (objectclass=*) groupMappingAttribute = uid groupMemberAttribute = uid groupNameAttribute = uid host = supportldap.splunksupport.com port = 389 realNameAttribute = cn 22 userBaseDN = ou=People,dc=splunksupport,dc=com userBaseFilter = (objectclass=*) userNameAttribute = uid [roleMap_supportLDAP] admin = rlee;bsmith 設定ファイルでの LDAP グループ/ユーザーの Splunk ロールへの マップ LDAP 認証とユーザーを設定したら、Splunk Web で LDAP グループとユーザーをロールにマップできます。 Splunk で LDAP を設定するには、このマニュアルの「設定ファイルによる LDAP の設定」を参照してくださ い。 グループのロールへのマップ Splunk ロールをストラテジーの LDAP グループにマップするには、そのストラテジーの roleMap スタンザを設定 する必要があります。各ストラテジーに、独⾃の roleMap スタンザが必要になります。この例では、 「ldaphost1」ストラテジー内のグループに対してロールをマップします。 [roleMap_ldaphost1] admin = SplunkAdmins itusers = ITAdmins ユーザーのロールへの直接割り当て ユーザーを直接 Splunk ロールに割り当てる必要がある場合は、groupBaseDN に userBaseDN の値を設定します。ま た、groupMappingAttribute、groupMemberAttribute、および groupNameAttribute の属性に、userNameAttribute と同じ属 性を設定します。例: [supportLDAP] SSLEnabled = 0 bindDN = cn=Directory Manager bindDNpassword = ######### groupBaseDN = ou=People,dc=splunksupport,dc=com groupBaseFilter = (objectclass=*) groupMappingAttribute = uid groupMemberAttribute = uid groupNameAttribute = uid host = supportldap.splunksupport.com port = 389 realNameAttribute = cn userBaseDN = ou=People,dc=splunksupport,dc=com userBaseFilter = (objectclass=*) userNameAttribute = uid [roleMap_supportLDAP] admin = rlee;bsmith LDAP 設定のテスト Splunk が LDAP サーバーに接続できない場合は、ここで説明するトラブルシューティング⼿順をお試しくださ い。 1. $SPLUNK_HOME/var/log/splunk/splunkd.log の認証エラーを確認します。 2. userBaseFilter および groupBaseFilter に対して追加したカスタム値を削除します。 3. ldapsearch を使って、指定した変数が適切なエントリを返すことを確認します。 ldapsearch -x -h <ldap_host> -p <ldap_port> -D "bind_dn" -w "bind_passwd" -b "user_basedn" "userNameAttribute=*" ldapsearch -x -h <ldap_host> -p <ldap_port> -D "bind_dn" -w "bind_passwd" -b "group_basedn" "groupNameAttribute=*" これらのコマンドが⼀致するエントリを返す場合、バックエンド LDAP システムは正しく設定されています。 Splunk LDAP ストラテジー設定のトラブルシューティングに進んでください。 Splunk のビルトイン認証から LDAP への変換 ビルトイン認証から LDAP に移⾏した場合、Splunk で作成したアカウントは⾃動的には無効にならず、LDAP 23 アカウントよりも優先されることに注意する必要があります。 Splunk のビルトイン認証システムから LDAP に変換した場合、LDAP 資格情報を使⽤するために Splunk のビ ルトインシステムからユーザーを削除しなければならないこともあります。この作業は、両⽅のシステムでユー ザー名が同じ場合にのみ必要になります。 ローカル Splunk アカウントの保護 Splunk で LDAP 認証を使⽤するように設定した場合、Splunk のビルトイン認証を使っているすべてのローカル アカウントが引き続き存在しており、アクティブになっていることに注意する必要があります。これには、 「Admin」アカウントも含まれています。このことによるセキュリティ上の意味を考慮する必要があります。 LDAP 認証の有効化時に、すべてのローカルアカウントを削除するには: ファイルを passwd.bak に移動します。 空の $SPLUNK_HOME/etc/passwd ファイルを作成します。 Splunk を再起動します。 $SPLUNK_HOME/etc/passwd Splunk が LDAP 認証を使⽤している場合にも、ローカル Splunk アカウントを作成できることに注意してくだ さい。また、バックアップや障害対策⽬的で残しているローカル Splunk アカウントには、強⼒なパスワードを使 ⽤するようにしてください。 LDAP を使⽤する場合、LDAP が以下の事項を採⽤していることを確認してください。 ⻑さと複雑性が強⼒なパスワード要件。 試⾏失敗回数が⼩さなパスワードロックアウト要件。 保存済みサーチ LDAP ユーザー名が、Splunk ビルトインシステムで使⽤していたユーザー名と同じ場合、その後ビルトインシス テムのユーザーを削除しても、保存済みサーチは変換せずにそのまま利⽤できます。 Splunk のビルトイン認証システムの使⽤時に作成した保存済みサーチを、別名の LDAP ユーザーに移転したい 場合は、メタデータを編集してください。 1. $SPLUNK_HOME/etc/apps/<app_name>/metadata/local.meta を編集して、各 savedsearch permission スタンザ下の [owner = <username>] フィールドを、対応する LDAP ユーザー名のフィールドと交換してから、変更内容を保存します。 2. 変更内容を反映するため Splunk を再起動します。 LDAP ユーザー削除のベストプラクティス LDAP ディレクトリからユーザーを削除する場合、Splunk がネイティブの認証ディレクトリからそれを⾃動的に 削除することはありません。通常このことは問題にはなりませんが、ユーザーが何らかのグローバル権限を持って いた場合、LDAP でエラーが発⽣することがあります。 Splunk における LDAP ユーザーの作業に関する詳細は、このマニュアルの「LDAP によるユーザー認証の設 定」を参照してください)。 Splunk のディレクトリからユーザー名を安全に削除するために、以下の⼿順に従ってください。 1. まず、$HOME/splunk/etc/users/$userid フォルダをバックアップします。 2. $HOME/splunk/etc/apps/ 下のファイルのユーザー ID ⽂字列を検索して、ユーザーがグローバル権限を持つサーチ やオブジェクトを所有しているかどうかを確認します。 3. ユーザーが所有しているサーチやオブジェクトの所有者を変更します。所有者を、管理者ユーザーや保守アカウ ント、または他の適切なアカウントに変更してください。 4. サーチヘッドの splunkd.log をチェックして、他の LDAP 認証エラーが発⽣していないことを確認します。 5. 任意のオブジェクト所有権をリダイレクトしたら、$HOME/splunk/etc/users/$userid フォルダを安全に削除するこ とができます。 外部システムによるユーザー認証の設定 外部システムによるユーザー認証の設定 Splunk では、3 種類の認証システムがサポートされています。 Splunk にビルトインされている独⾃のシステム。「Splunk 認証システムを使ったユーザー認証の設定」を 参照してください。 LDAPに関する説明は「LDAP を使ったユーザー認証の設定」を参照してください。 ここで説明する、PAM や RADIUS などの外部認証システムを使⽤するための、スクリプト認証 API。 重要: Splunk のビルトインシステムは、他の外部システムよりも常に優先されます。Splunk によるユーザーの 認証順序を以下に⽰します。 1. Splunk ビルトイン認証 2. LDAP またはスクリプト認証 (有効な場合)。LDAP の詳細は、「LDAP によるユー 24 ザー認証の設定」を参照してください。 スクリプト認証の仕組み スクリプト認証では、ユーザーが⽣成した Python スクリプトが、Splunk サーバーと PAM や RADIUS などの 外部認証システム間の仲介役を果たします。 API は、Splunk と認証システム間のやり取りを処理するいくつかの関数から成り⽴っています。それらの関数を 実装するハンドラを持つスクリプトを作成する必要があります。 Splunk で認証システムを使⽤するには、認証システムが動作していることを確認の上で、以下の作業を⾏いま す。 1. Python 認証スクリプトを作成します。詳細は、「認証スクリプトの作成」を参照してください。 2. authentication.conf を編集して、スクリプト認証と関連する設定を指定します。詳細は、 「authentication.conf の編集」を参照してください。 例 Splunk には、RADIUS ⽤や PAM ⽤を含めて、さまざまなサンプル認証スクリプトと関連する設定ファイルが⽤ 意されています。また、dumbScripted.py と呼ばれる単純なスクリプトも⽤意されています。このスクリプトは、ス クリプトと Splunk 間のやり取りに注⽬しています。 サンプルのスクリプトと設定ファイルを参考に、独⾃のスクリプトを作成することができます。ご⾃分の環境に合 わせて変更してください。 これらのサンプルは、$SPLUNK_HOME/share/splunk/authScriptSamples/ にあります。このディレクトリには、サンプル に関する情報、および Splunk と外部認証システム間の接続に関する情報を記載した README ファイルも存在 しています。 重要: Splunk は、これらのスクリプトに関するサポートを提供していません。また、お客様の認証/セキュリ ティニーズに適合していることは、保証いたしません。これらのサンプルはあくまでも参考例として提供されてお り、お客様のニーズに合わせて変更/機能拡張する必要があります。 認証スクリプトの作成 Splunk で認証システムを使⽤するには、認証システムが動作していることを確認の上で、以下の作業を⾏いま す。 1. Python 認証スクリプトを作成します。詳細は、「Python スクリプトの作成」を参照してください。 2. 新たなスクリプトをテストします。詳細は、「スクリプトのテスト」を参照してください。 3. authentication.conf を編集して、スクリプト認証と関連する設定を指定します。詳細は、 「authentication.conf の編集」を参照してください。 Python スクリプトの作成 以下の認証関数を実装した Python スクリプトを作成する必要があります。 userLogin getUserInfo getUsers Splunk は必要に応じてこれらの関数を呼び出して、ユーザーログインの認証やユーザーのロール情報の取得を⾏ います。 必要に応じて、スクリプトにこの関数のハンドラを含めることもできます。 getSearchFilter 以下の表に、認証関数、引数、およびリターン値の概要を⽰します。 関数 説明 引数⽂字列 リターン値⽂字列 -username=<username> userLogin ユーザー資格情報を使って ログインします。 fail -password=<password> (stdout 経由で安全に渡される) (値は stdin 経由で 1 ⾏当たり 1 つ渡 される) --status=success|fail -userInfo=<userId>;<username>;<realname>;<roles> 25 以下の事項に注意してください。 は、セミコロン区切りリストで 指定する必要があります。 <userId> は廃⽌されました。単に関連す るセミコロンのみが返されます。 <username> が必要です。 <realname> は省略できますが、そのセミ コロンは必要です。 <roles> が必要です。複数のロールを返 すには、コロンを使って各ロールを区切 ります。 例: admin:power この例では、「docsplunk」という名前 のユーザーのロールが返されます。 userInfo getUserInfo 名前とロールを含めたユー ザー情報を返します。 -username=<username> --status=success -userInfo=;docsplunk;;admin:power --status=success|fail -userInfo=<userId>;<username>;<realname>;<roles> -userInfo=<userId>;<username>;<realname>;<roles> -userInfo=<userId>;<username>;<realname>;<roles> ... getUsers すべての Splunk ユーザー の情報を返します。 以下の事項に注意してください。 なし 各ユーザーの情報を返す構⽂についての 情報は、getUserInfo を参照してくださ い。 各ユーザーの情報はスペースで区切りま す。 <roles> が必要です。複数のロールを返 すには、コロンを使って各ロールを区切 ります。 例: admin:power --status=success|fail --search_filter=<filter> --search_filter=<filter> ... getSearchFilter オプション。このユーザー に特に適⽤されているフィ ルタ、およびユーザーの ロールに適⽤されている フィルタを返します。各 フィルタは OR で結合され ます。 -username=<username> 注意: ユーザーベースのサーチフィルタはオ プションで、使⽤はお勧めできません。ロー ルにサーチフィルタを割り当ててから、ユー ザーをそのロールに割り当てることをお勧め します。 詳細は、「サーチ時の getSearchFilter 関数 を使ったフィルタリング」を参照してくださ い。 これらの関数の実装⽅法については、サンプルスクリプトを参照してください。 スクリプトのテスト Splunk とスクリプト間の通信は stdin および stdout 経由で⾏われるため、Splunk から呼び出さずにコマンド シェルから対話的にスクリプトをテストすることができます。1 ⾏当たり 1 つの引数を送信して、各関数呼び出 しは EOF (Ctrl-D) で終了するようにしてください。 以下のパターンで、各関数を個別にテストします。 > python [script] [function name] [pass arguments here, one per line] [send eof, with Ctrl-D] [output appears here, check that it's correct] > 架空のスクリプト「example.py」、および 2 ⼈のユーザー「alice」と「bob」を使った、スクリプトの簡単なテ ストを⾏うデバッグセッションの例を以下に⽰します。ここで「alice」は「Admin」および「Super」ロールの メンバーで、「bob」は「user」ロールのメンバーです。 > python example.py userLogin --username=alice 26 --password=correctpassword <send an EOF> --status=success > python example.py userLogin --username=bob --password=wrongpassword <send an EOF> --status=fail > python example.py getUsers <no arguments for this function, send an EOF> --status=success --userInfo=bob;bob;bob;user --userInfo=alice;alice;alice;admin:super > python example.py getUserInfo --username=bob <send an EOF> --status=success --userInfo=bob;bob;bob;user > python example.py getUserInfo --username=userdoesnotexist <send an EOF> --status=fail > 重要: これは単なるスクリプトのテスト例です。実際のスクリプトの徹底的なテストを想定している訳ではあり ません。 authentication.conf の編集 Splunk で認証システムを使⽤するには、認証システムが動作していることを確認の上で、以下の作業を⾏いま す。 1. 1. Python 認証スクリプトを作成、テストします。詳細は、「認証スクリプトの作成」を参照してください。 2. authentication.conf を編集して、認証スクリプトを有効にします。このトピックの「スクリプトを有効にす る」を参照してください。 3. authentication.conf を編集して、キャッシュの保持期間を設定します。このトピックの「キャッシュ期間の設 定」を参照してください。 スクリプトを有効にする 認証を実装する Python スクリプトを作成したら、$SPLUNK_HOME/etc/system/local/ 内の authentication.conf を更新 してスクリプトを有効にします。また、$SPLUNK_HOME/share/splunk/authScriptSamples/ のサンプル authentication.conf をコピーして編集することも可能です。 [authentication]スタンザのヘッダー下にある認証タイプに Scripted を設定します。 [authentication] authType = Scripted authSettings = script [script] スタンザのヘッダー下に、スクリプト変数を設定します。例: [script] scriptPath = $SPLUNK_HOME/bin/python $SPLUNK_HOME/bin/<scriptname.py> キャッシュ期間の設定 スクリプト認証使⽤時の認証パフォーマンスを⼤幅に⾼速化するには、Splunk の認証キャッシュ機能を活⽤して ください。そのためには、オプションの [cacheTiming] スタンザを追加します。各スクリプト関数 (getSearchFilter を除く) には、設定可能な cacheTiming 属性があります。この属性は当該関数のキャッシュをオンにして、またそ のキャッシュ期間を⽰します。たとえば、getUserInfo 関数のキャッシュタイミングを指定するため に、getUserInfoTTL 属性を使⽤します。関数のキャッシュは、対応する属性が指定されている場合にのみ⾏われま す。 設定は、Splunk が外部認証システムと通信するためにスクリプトを呼び出す頻度を指定します。時間 は秒 (s)、分 (m)、時間 (h)、⽇数 (d) などで指定できます。⼀般的にはキャッシュの頻度を秒または分で指定し ます。単位を指定しない場合は、デフォルトの秒で値が判断されます。つまり、「5」は「5s」とみなされます。 cacheTiming この例は、⼀般的なキャッシュの値を表しています。 [cacheTiming] userLoginTTL = 10s getUserInfoTTL = 1m 27 getUsersTTL = 2m は、ユーザーのログイン/パスワード妥当性をキャッシュに格納する期間を決定するため、この値を低 めに設定することができます。 userLoginTTL すべてのキャッシュをすぐに更新するには、CLI コマンド reload auth を使⽤します。 ./splunk reload auth 注意: このコマンドは、現在のユーザーをシステムからブートオフすることはありません。 キャッシュは Splunk Web から更新することもできます。 1. [システム] メニューの [ユーザーと認証] で、[アクセス制御] を選択します。 2. [認証⽅法] をクリックします。 3. [認証設定の再読込] をクリックして、キャッシュを更新します。 指定された各関数 (getUsers を除く) は、各ユーザーに対して個別のキャッシュを保有します。そのため、10 ⼈の ユーザーがログオンしており、getUserInfoTTL 属性を指定している場合、getUserInfo 関数は 10 個のユーザーベー スのキャッシュを保持します。getUsers 関数にはすべてのユーザーが含まれるため、単⼀のグローバルキャッシュ を保持します。 PAM 認証の使⽤ サンプルディレクトリ $SPLUNK_HOME/share/splunk/authScriptSamples/ にある README の記載⼿順に従って、 Splunk の PAM 認証を設定することができます。 それでも認証できない場合は、/etc/pam.d/pamauth を編集して以下の⾏を追加してください。 auth sufficient pam_unix.so サーチ時の getSearchFilter 関数を使ったフィルタリング この関数はオプションで、サーチ時のユーザーベースのフィルタリングを実装するために利⽤できま す。getSearchFilter を有効にすると、サーチの実⾏時に毎回この関数が呼び出されます。ユーザーベースのサーチ フィルタは、そのユーザーのロールに指定されているフィルタを補⾜するものです。ロールに設定されているフィ ルタと⼀緒に、返されたフィルタが各サーチに適⽤されます。この関数では、フィルタのキャッシュは⾏われませ ん。 注意: ユーザーベースのサーチフィルタはオプションで、使⽤はお勧めできません。ロールにサーチフィルタを 割り当ててから、ユーザーをそのロールに割り当てることをお勧めします。 getSearchFilter 関数を有効にするには、authentication.conf に scriptSearchFilters を設定します。 [script] scriptPath = $SPLUNK_HOME/bin/python $SPLUNK_HOME/bin/<scriptname.py> scriptSearchFilters = 1 注意: 以前のバージョンでは、Splunk のビルトインシステムで認証されていたユーザーのサーチフィルタを実装 するために、getSearchFilter を使⽤することもできました。現在は使⽤することができません。4.2 以降では、ス クリプト認証で認証されたユーザーに対してのみ、getSearchFilter が呼び出されます。 また、getSearchFilter の呼び出しが失敗した場合、ユーザーのサーチはキャンセルされて、エラーメッセージが返 されます。こうすることで、不正なサーチからの結果をユーザーが⾒ることはありません。 SAML によるシングルサインオン設定 SAML によるシングルサインオンについて シングルサインオンの設定を有効にするためには、IDP (Splunk Enterprise は現在 PingFederate の Ping Identity 製品をサポートしています) により提供される情報を使⽤し、Splunk Web から SAML を使⽤するか、 authentication.conf を直接編集して Splunk Enterprise を設定します。 Splunk 6.3 では SAML 認証を使⽤してシングルサインオンの設定を⾏います。SAML で SSO を設定するには、 次の⼿順にしたがってください。 IDプロバイダ:現在、IDプロバイダは Ping Identity のみがサポートされています。 オンプレミスサーチヘッドを使⽤した設定:現在、SAML による SSO では、外部からの設定はサポートさ れていません。 change_authentication Splunk 権限による admin ロール:この権限レベルにより、SAML を有効化し、 Splunk サーチヘッドでの認証設定を編集できます。 28 設定⽅法: 1.IDP を設定するか、IDP 設定へのアクセス権限があることを確認します。Splunk に認証⽅法を指定するには、 IDP からの情報が必要です。権限に関する属性を与えるには、IdP を設定しなければなりません。 role realName mail 2.IdP より返されるグループを Splunk ロールにマップします。複数のグループを1種類の Splunk ロールにマッ プできます。 3.ログイン URL をユーザーに提供することで、ロールを与えられた IdP ユーザーは SSO でログインできるよう になります。 詳細は、以下の項⽬を参照してください。 設定ファイルにおける SAML SSO の設定 Splunk Web における SAML SSO の設定 Splunk Web における SAML SSO の設定 Splunk サーバーを設定して SAML 認証システムを使⽤すると、その SAML サーバーの各グループを Splunk の ロールにマップすることで、ログインする権限を与えられます。 1.[設定 ] メニューで、[アクセス制御 ] > [認証⽅法 ] を選択します。 2.認証タイプとして [SAML ] を選択します。 3.[SAML を使⽤ ] をクリックします。 4.「SAML グループ」のページで、[SAML 設定 ] をクリックします。 29 6.ページの [⼀般設定 ] セクションで、次の情報を⼊⼒します。 メタデータファイルを閲覧、選択するか、メタデータをテキストウィンドウに直接コピー/貼り付けします。 シングルサインオン URL を指定します。これは、Splunk が認証リクエストを送信する IdP 上の保護され たエンドポイントです。ユーザーはこの URL を SSO ログインに使⽤します。SAML の有効化後に、通常 の Splunk ログイン画⾯を取得するには、完全なログイン URL (/account/login) に loginType=Splunk を付加 する必要があります。 シングルログアウト URL を指定してください。これが IdP プロトコルのエンドポイントになります。こ の URL を指定しない場合、ユーザーはログアウトできません。 証明書ファイル を IdP に指定してください。 エンティティ ID を指定してください。これは、IdP の SP 接続エントリで設定されたエンティティ ID で す。 署名済み認証リクエスト および署名済み SAML レスポンス を希望するかどうかチェック (希望すること を推奨) してください。 属性クエリセクションでは次の情報を⼊⼒します。スケジュール済みサーチを後で作成するには、この情報を指定 する必要があります。 属性クエリ URL を指定します。これは、SOAP を介したクエリが送信される IdP 上のエンドポイントで す。 属性クエリおよびレスポンスに署名をつけたいか(つけることを推奨)どうかをチェック し 、[はい]にチェッ クする場合は必要資格情報を指定してください。 オプションとして、ページの⾼度な設定セクションで、次の情報を⼊⼒します。 ホスト名またはロードバランサー IP ロードバランシング⽤リダイレクトポート ログアウト後にユーザーをリダイレクトするかどうか (およびリダイレクト先) グループのロールへのマップ Splunk サーバーを設定して SAML 認証システムを使⽤すると、その SAML サーバーの各グループを Splunk の ロールにマップすることで、ログインする権限を与えられます。 1.[設定] メニューで、[アクセス制御] > [認証⽅法] を選択します。 2.認証タイプとして [SAML ] を選択します。 3.[SAML を使⽤ ] をクリックします。 30 4.「SAML グループ」のページで、[新規グループ ] をクリックするか、変更したいグループへの [編集 ] リンクを クリックします。 5.グループに名前をつけます。 6.このグループに指定したいロールを、左列から右列に動かして、決定します。 7.[保存 ] をクリックします。 設定ファイルにおける SAML SSO の設定 このページは現在作業中で、まもなく更新される予定です。 このトピックでは、設定ファイルを使⽤して SAMLv2 の SSO を設定する⽅法を説明します。 Splunk Enterprise の authentication.conf と また、IDプロバイダを設定します。 設定 web.conf を設定します。 authentication.conf 次の場所に以下のスタンザを設定してください。 authentication.conf [authentication] authSettings = saml_settings authType = SAML [rolemap_SAML] admin = Super Admin; power = Power Admin; user = <list roles with no spaces> Admin;Employee; [saml_settings] entityId = <entityid> idpAttributeQueryUrl = <path to the Attribute query> https://yourpatj/idp/attrsvc.ssaml2 idpCertPath = <path to the idp cert in Splunk> /home/user/splunk/saml-install/etc/auth/ping_idp.crt idpSSOUrl = <path to the sso url> https://your path/idp/SSO.saml2 idpSLOUrl = <Lougout url. If not specified, this will be treated as a typical sso and the logout button will be disabled> https://your path/idp/SLO.saml2 # redirectPort=443 attributeQueryTTL = 3600 signAuthnRequest = true signedAssertion = true 31 attributeQueryRequestSigned = true attributeQuerySignedResponse = true attributeQuerySoapPassword = <your password> attributeQuerySoapUsername = <your username> 次の⽅法で属性クエリリクエストフィールドに対処します。これは、スタンザに含まれるものです。このように設 定を⾏うのは、既存の SSL 設定は強⼒過ぎて Ping Identity と連携できず、属性クエリが機能しないためです。 次のように対処して SSL 暗号を弱めることで Ping Identity を調整することができます。 #cipherSuite = TLSv1+MEDIUM:@STRENGTH cipherSuite = ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM defaultRoleIfMissing = user skipAttributeQueryRequestForUsers=admin,username,anotherusername sslKeysfile = <path_to_saml_signing_cert_and_keys> sslKeysfilePassword = <password_for_saml_keys> enforceResponseVerification = false 設定 web.conf 次の場所に以下のスタンザを設定してください。 web.conf # Make sure that appserver is not disabled in web.conf, i.e. it should have a valid config like the following: [settings] appServerPorts = 8123 IDプロバイダの設定 まず、IdP を設定して、Splunk メタデータをインポートしてください。Splunk Enterprise メタデータを IdP に インポートするには、AuthnRequest 署名および AttributeQuery リクエスト署名設定に対し、 Splunk Enterprise と IdP への互換性を持たせてください。 1.IdP 証明書を Splunk Enterprise インスタンスのファイルにエクスポートします。 2.web.conf と authentication.conf にSAML 設定スタンザのこの証明書を指定します。 3.Splunk Enterprise サーバー資格 (server.pem) を署名認証⽤ IdP にインポートします。 Splunk メタデータは SplunkWeb の /saml/spmetadata エンドポイントにヒットすればエクスポートができる点に 留意してください。また、splunkd で <SAML-sp-metadata</code> エンドポイントにアクセスすることが可能で す。 SAML SSO のトラブルシューティング ここでは、⼀般的な問題と解決⽅法を紹介します。 問題 次のメッセージが表⽰された場合。 ERROR AuthenticationManagerSAML - Requesting user info from ID returned an error Error in Attribute query request, AttributeQueryTransaction err=Cannot resolve hostname, AttributeQueryTransaction descr=Error resolving: Name or service not known, AttributeQueryTransaction statusCode=502 問題への対応策 が SAML スタンザで正しく指定されていることを確認してください。Ping Identity の設定⽅法 によっては、次の場合もあります。 cipherSuite cipherSuite = TLSv1+MEDIUM:@STRENGTH cipherSuite = ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM SOAP パスワード要件がすべて Ping Indentity の最新版に対応していることを確認してください。 SAML の SSL 設定が authentication.conf に正しく設定されていることを確認してください。 問題 次のメッセージが表⽰されます。 ERROR UserManagerPro - user="samluser1" had no roles 32 問題への対応策 で、各ロール名の最後に「;」がついた正しいロールのマップ設定が⾏われていることを確認し てください。 rolemap_SAML 問題 次のメッセージが表⽰されます。 ERROR AuthenticationManagerSAML - Attribute query request failed. Status code=urn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal, Status msg=No attributes found for requested subject 問題への対応策 role、mail、realName といった属性が AuthnRequest および属性クエリリクエストの⼀部として返されるよう マップされていることを確認してください。 問題 ユーザーは、アサーション認証後はログインできません。有効な Splunk ロールがローカルマッピングまたはア サーションに⾒つかりません。 問題への対応策 スタンザで、IdP から返されるロールと 適切な Splunk ロールとの正しいマッピングが⾏われ ていることを確認してください。 rolemap_SAML authentication.conf に定義された各ロールの間または前後にスペースが無いことを確認してください。例: user = User;Employee 問題 認証を SAML として設定し、設定は正しく⾏えたように思えますが、ログイン画⾯の代わりに Splunk の認証 ページが表⽰されます。 問題への対応策 web.conf で appServerPorts が有効なポートに設定され、『0』になっていないことを確認してください。 リバースプロキシによるシングルサインオンの設定 リバースプロキシによるシングルサインオンについて Splunk のシングル サインオン (SSO) を利⽤すれば、リバースプロキシを使って Splunk 認証 を処理することが できます。いったんユーザーがプロキシにログインすると、その後は Splunk Web (およびプロキシに設定されて いる他のアプリケーション) にシームレスにアクセスすることができます。 Splunk Enterprise SSO でリバースプロキシを使えば、Splunk Web のみを経由した Splunk Enterprise へのロ グインがサポートされます。リバースプロキシは認証情報の保存に cookie を使⽤するため、Splunk の CLI 認証 に SSO を使⽤することはできません。https://localhost:8089 (または割り当てられている管理ポート) の起動に は、別途の認証が必要です。 リバースプロキシによる SSO を利⽤するには、以下のものが必要になります。 プロキシサーバー (Splunk Enterprise は IIS または Apache をサポート)。 LDAP サーバーまたは他の外部認証システム。 正しく機能する Splunk Enterprise 設定。 これらの項⽬の設定⽅法と SSO のセットアップの詳細は、「シングル サインオンの設定」を参照してください。 仕組み Splunk Enterprise の管理者とユーザーは Splunk Web でデプロイされているプロキシ経由で Splunk Web を起 動します。プロキシは到着した要求を、認証システムに対して認証します。認証が成功すると、プロキシは要求 ヘッダーに認証された ID 属性を設定し、その情報を Splunk Enterprise に送信します。 Splunk Enterprise はプロキシからの HTTP 要求を受け付けて、ヘッダーにユーザーが含まれている場合、ログ インページをバイパスしてユーザーを⾃動認証します。 33 正常にシングル サインオンを⾏うためには、プロキシから Splunk Web への要求にはすべて、この認証された ヘッダーが含まれていなければなりません。要求にヘッダーが含まれていない場合、設定内容に応じてユーザーに ログインページまたはエラーメッセージが表⽰されます。Splunk は ID がブラウザセッションを終了するまでの 間、この認証されたヘッダーの使⽤を継続します。 Splunk によるプロキシ要求の処理⽅法 プロキシサーバーが Splunk Web に要求を⾏う場合、Splunk Web は web.conf 内の プロキシの IP が信頼する IP のリストに記載されているかどうかを検証します。 trustedIP の値を参照して、 IP が信頼する IP でない場合、要求は拒否されてシングルサインオンの試みは失敗します。信頼する IP アドレス だった場合は、Splunk Web が要求ヘッダー内の ID をクエリして、splunkd に認証要求を送信します。 splunkd は Splunk Web からの要求を受信すると、クライアント (⼀般的には Splunk Web) から受信した IP ア ドレスが server.conf ファイルの trustedIP プロパティの値と⼀致するかどうかを検証します。 IP アドレスが trustedIP にない場合、要求は拒否されてシングルサインオンの試みは失敗します。web.conf の SSOmode 設定に応じて、ログインページに戻るか、またはエラーページが表⽰されます。この属性および他の設定 の詳細は、「Splunk シングルサインオンの設定」を参照してください。 信頼する IP である場合、splunkd は要求ヘッダーに含まれている情報を使⽤して、認証⼿続きを実⾏します。 Splunk によるユーザーの認証⽅法 Splunk はまず、与えられた ID とロールが Splunk ネイティブユーザー設定内のユーザーと⼀致するかどうかを 確認します。⼀致する情報がない場合、LDAP に⼀致する項⽬があるかどうかを検索します。(Splunk による ユーザーの認証⽅法は、このマニュアルの「LDAP によるユーザー認証の設定」を参照してください) ⼀致する項⽬が⾒つからず、ヘッダー内に含まれているユーザーを認証できない場合は、ブラウザにエラーメッ セージが表⽰されます。 ⼀致する項⽬が⾒つからない場合、Splunk はユーザーを認証して、既存のセッションが存在しているかどうかを 確認します。セッションがすでに存在している場合、Splunk はそのセッション ID を使⽤して、ユーザーに Splunk Web へのアクセスを許可するために必要な cookie を作成します。セッションが存在しない場合は、新し いセッションと Splunk Web 認証に必要な cookie が⽣成されます。 34 cookie を作成すると、Splunk Web は標準の処理作業を再開します。それ以降のプロキシ URL 経由の Splunk へのアクセスには、要求のヘッダーに信頼する ID が含まれており、ブラウザのセッションが終了されるまでの 間、再認証の必要はありません。 リバースプロキシによるシングルサインオンの設定 Splunk Enterprise でリバースプロキシベースの SSO を設定する前に、以下のものを⽤意していることを確認し てください。 外部システムを認証するためのリバースプロキシとして設定されたプロキシサーバー (Splunk Enterprise は IIS または Apache をサポート)。 認証のためにプロキシのグループやユーザーが適切にプロビジョニングされた、LDAP サーバーまたは他の 外部認証システム。 プロキシと同じ外部認証システム (⼀般的には LDAP) を使⽤するように設定された、または外部認証システ ムに含まれているユーザー/グループ ID と⼀致するネイティブ Splunk ユーザーを持つ、正常に機能する Splunk Enterprise 設定。 リバースプロキシによる SSO を設定するには、以下の⼿順にしたがってください。 1. 認証するプロキシサーバーのプロパティを編集します。 2. Splunk Enterprise server.conf 3. Splunk Enterprise web.conf ファイルを編集します。 ファイルを編集します。 注意: セキュリティを最適化するために、TLS/SSL 対応のデプロイに、HTTP ヘッダーベースのソリューション を実装する必要があります。 設定 server.conf スタンザの trustedIP を編集して、splunkd に安全な認証要求を⾏うための IP アドレスを追加し ます。⼀般的にこれは Splunk Web、つまり localhost になります。 splunkd インスタンス当たり 1 つの IP ア ドレスのみを⼊⼒することができます。 general settings trustedIP=127.0.0.1 trustedIP リストに IP アドレスが指定されていない場合、デフォルトでは Splunk SSO が無効になります。 web.conf の設定 SSO を有効にするには、web.conf (SPLUNK_HOME/etc/system/local) 内の る必要があります。 [settings] スタンザで、以下の項⽬を設定す SSOMode = strict trustedIP = 127.0.0.1,10.3.1.61,10.1.8.81 remoteUser = X-Remote-User tools.proxy.on = True 属性 デフォル ト 値 SSOMode 属性は、Splunk Web の SSO が strict モードで動作するか、または モードで動作するかを決定します。 permissive SSOMode no Strict モードでは、trustedIP プロパティ内に記載されている IP アドレスと⼀致する ID のみに認証が制限されます。接続を試みている IP が記載されているどの IP アド レスとも⼀致しない場合、ユーザーにエラーメッセージが表⽰されます。SSO には Strict モードを使⽤することをお勧めします。 Permissive モードも、trustedIP リストに記載されている IP に要求の認証を制限し ます。Permissive モードでは、接続を試みている IP がどの IP アドレスとも⼀致し ない場合、ユーザーにログインページを表⽰して再認証を要求します。 trustedIP N/A これに、認証プロキシの IP アドレスを設定します。単⼀のアドレスまたは複数のア ドレスのカンマ区切りリストを指定します。IP 範囲やネットマスク表記はサポート されていません。 属性は、HTTP 要求ヘッダー経由でプロキシサーバーに渡される、認証さ れた ID 属性を決定します。この値のデフォルトは REMOTE_USER ですが、プロキシが 認証後に LDAP に属性プロパティを設定する限り、この要求ヘッダー経由で任意の LDAP 属性を渡すことができます。remoteUser 属性を設定する場合、ID 属性を Splunk に渡すために、プロキシ設定内に RequestHeader プロパティを設定する必要 があります。この⼿順については、「Splunk シングルサインオンについて」を参照 してください。 remoteUser remoteUser REMOTE_USER デフォルトで使⽤される Splunk ヘッダーは REMOTE_USER ですが、ご利⽤のプロキシ が別のヘッダーを使⽤している場合は、ここでヘッダー名を変更することができま す。 35 Splunk SSO を使⽤するには、tools.proxy.on に次の値を設定します: tools.proxy.on false true 「false」を設定すると、ログオンしているコンピューターの IP アドレスを使⽤し ますが、Splunk Enterprise の SSO でユーザーの代わりにログオンを要求するのは プロキシです。IP アドレスが trustedIP プロパティに記載されていない場合、要求 は拒否されるため、この値に True を設定すると、Splunk Web がプロキシの IP ア ドレスを確認することを表しています。 Splunk Web をプロキシの背後に設置しており、Splunk Web をプロキシのルートに配置していない場合 は、$SPLUNK_HOME/etc/system/local/web.conf 内の root_endpoint も設定する必要があります。 たとえば Splunk Web を「yourhost.com:9000/splunk」で提供している場合は、root_endpoint に する必要があります。 /splunk を設定 例: root_endpoint=/lzone ProxyPass /lzone http://splunkweb.splunk.com:8000/lzone ProxyPassReverse /lzone http://splunkweb.splunk.com:8000/lzone 上記の例で、Splunk Web は でアクセスされます。 次に httpd.conf http://splunk.example.com:8000/ の代わりに http://splunk.example.com:8000/lzone 経由 でマッピングを設定し、プロキシが参照できるようにします。 ProxyPass /lzone http://splunkweb.splunk.com:8000/lzone ProxyPassReverse /lzone http://splunkweb.splunk.com:8000/lzone セッション管理 セッションの簡単なログアウト⼿段はありません。プロキシのヘッダー内に正しいヘッダー情報が含まれている限 り Splunk Enterprise はセッションを保持するため、そのことを考慮して適切なプロキシのセッション・タイム アウト値を設定する必要があります。 タイムアウトになる前にセッションを終了する必要がある場合は、REST エンドポイントとセッション ID を使っ てセッションを破棄してください。 curl -s -uadmin:changeme -k -X DELETE https://localhost:8089/services/authentication/httpauth- tokens/990cb3e61414376554a39e390471fff0 リバースプロキシ SSO のトラブルシューティング Splunk Web には、デプロイ環境のデバッグに役⽴つ、環境とランタイムデータを分析するためのインターフェ イスが⽤意されています。このページには、プロキシ経由でまたは直接 URL を⼊⼒してアクセスできます。プロ キシサーバー経由でこのページにアクセスしない場合、要求ヘッダーは利⽤できません。 この URL は以下のようになります。 http://YourSplunkServer:8000/debug/sso トラブルシューティングページを使ってデプロイ環境を分析する場合は、以下の事項を考慮してください。 [Splunk trusted IP] (Splunk が信頼する IP) として提供されている IP をホスト IP と⽐較してくださ い。これらの値が同じでなければなりません (ご利⽤のプロキシの IP でなければなりません)。トラブル シューティングページで両者の値が異なる場合は、server.conf の trustedIP の値を変更する必要がありま す。 [ Incoming request IP received by splunkweb ] (splunkweb が受信した IP リクエスト)の値を確 認して、ご利⽤のクライアントの IP アドレスが表⽰されていることを確認します。クライアントの IP と⼀ 致しない場合は、以下の作業を⾏う必要があります。 web.conf を編集してこれを修正する。 tools.proxy.on に true が設定されていることを確認する。 プロキシがヘッダーを提供していることを確認します。[Other HTTP Headers] (その他の HTTP ヘッ ダー)下の [Authorization] (認証)フィールドをチェックしてください。値が存在しない場合は、プロ キシの http.conf ファイルをチェックして、リモートヘッダー属性値が正しく設定されているかどうかを確 認してください。Splunk は、リモートヘッダー値の X_REMOTE_USER を受け付けるように設定されています。 ⼤部分のプロキシでは、この値がデフォルト値になっています。プロキシのリモートヘッダーが異なってお り、その値を保持しておきたい場合は、web.conf のリモートヘッダー値を編集して、Splunk が受け付ける ヘッダーを変更してください。詳細は、「SSO の設定」を参照してください。 Splunk Web が splunkd に送信する cookie を作成しているかどうかを確認します。[Other HTTP headers] (その他の HTTP ヘッダー)の [Cookie] (クッキー)フィールドをチェックして、cookie が 設定されていることを確認してください。cookie が設定されていない場合は、web.conf ファイルをチェック して、ファイルが正しく設定されているかどうかを確認してください。詳細は、「SSO の設定」を参照して ください。 36 SSL を使った Splunk Enterprise の保護について SSL を使った Splunk の保護について このセクションでは、SSL を使って保護する Splunk 設定のタイプについて説明していきます。 Splunk には、⼀連の証明書が⽤意されており、デフォルトではそれを使⽤するように設定されています。これら の証明書により⼀般的な不正アクセス試⾏を防⽌することはできますが、Splunk に同梱されているルート証明書 はすべて同じルート証明書で、同じルート証明書を持つユーザーは認証できてしまうため、そのままでは脆弱性が 存在しています。 デフォルトの証明書は、起動時に⽣成/設定され、$SPLUNK_HOME/etc/auth/ に保管されます。 デフォルトの証明書は⽣成後 3 年で失効するように設定されており、失効後はこのマニュアルに記載されている 説明に従って、新しく証明書を作成、設定する必要があることに注意してください。 Splunk Web のデフォルト証明書の詳細は、「Splunk Web で暗号化 (https) を有効にする」または 「web.conf で (https) を有効にする」を参照してください。 デフォルトの証明書で転送するための SSL に関する情報については、「デフォルトの証明書を使⽤する Splunk 転送の設定」を参照してください。 主に 3 種類の設定シナリオに、暗号化や認証を適⽤することができます。 ブラウザと Splunk Web 間の通信 Splunk のフォワーダー からインデクサー への通信 管理ポート経由の Splunk インスタンス間の通信 もっとも⼀般的なシナリオと、デフォルトの SSL 設定を以下の表に⽰します。 やり取りの 種類 クライアント機 能 サーバー機能 暗号化 証明書認証 共通名の チェック やり取りされ るデータの種 類 ブラウザと Splunk Web ブラウザ Splunk Web デフォル トでは無 効 クライアント クライアント ⽤語のサーチ (ブラウザ) が記 (ブラウザ) が記 結果 述 述 Splunk 間 通信 Splunk Web splunkd デフォル トで有効 デフォルトでは デフォルトでは ⽤語のサーチ 無効 無効 結果 フォワー ダーとして splunkd インデ クサーとして デフォル トでは無 効 デフォルトでは デフォルトでは インデックス 無効 無効 対象データ 転送 splunkd Splunk 間 通信 splunkd Splunk 間 通信 splunkd デプロイ splunkd デプロ デフォル クライアントとし イサーバーとし トで有効 て て デフォルトでは デフォルトでは 設定データ 無効 無効 サーチ ヘッドとして デフォルトでは デフォルトでは サーチデータ 無効 無効 サーチ ピアとして splunkd デフォル トで有効 ブラウザと Splunk Web 間の通信 ブラウザから Splunk Web へのデータは、主にサーチ要求と返されたデータで構成されています。 Splunk Web を使って、または設定ファイル を編集して、データの暗号化 (HTTPS) を⼿軽に有効化できます。 デフォルトの証明書による暗号化は、⼀般的な傍受に対処することができますが、完全に保護される訳ではないこ とに注意してください。 よりセキュリティを強化するためには、デフォルトの証明書を信頼されている CA が署名した証明書に置換して ください。この場合、証明書に⾃⼰署名するのではなく、CA 証明書を使⽤することを強くお勧めします。 Splunk Web にアクセスする各ブラウザの証明書ストアに CA を追加できない限り、ユーザーのブラウザは⾃⼰ 署名の証明書を信頼できないものとみなします。詳細は、「Splunk Web の保護について」を参照してくださ い。 Splunk フォワーダーからインデクサー フォワーダーからインデクサーに送信されるデータは、インデクサーがサーチやレポートに使⽤するデータです。 組織、伝送されるデータの形式、および Splunk 設定に応じて、データは読み取り可能または保護されている場合 も、そうではない場合もあります。 機密 raw データを保護すれば、不正利⽤や中間者攻撃の防⽌に役⽴ちます。 SSL 暗号化を有効にすると、デフォルトの証明書が使⽤され、暗号化/圧縮機能が提供されます。ただし、デフォ ルトの証明書を使った通信では、インストールされている各 Splunk に証明書パスワードが提供されるため、保護 された認証⼿段を提供していません。デフォルトの証明書は初期スタートアップ後 3 年で失効するように設定さ れています。失効すると、フォワーダーとインデクサー間の通信は失敗します。 セキュリティを強化するには、署名された証明書を使った証明書認証が必要です。既知の相互に信頼している認証 局が署名した証明書は、⾃⼰署名した証明書よりもさらに安全であると外部の第三者には認識されます。Splunk フォワーダーおよびインデクサーでの証明書の使⽤に関する詳細は、「フォワーダーからのデータの保護」を参照 してください。 37 Splunk 間 Splunk 間通信は、異なる Splunk インスタンス間で管理ポート経由で⾏われます。⼀般的には分散環境で⾏われ ますが、常に⾏われる訳ではありません。たとえば、デプロイサーバーからクライアントに送信される設定データ がこれにあたります。 デフォルトで SSL 暗号化は、Splunk 内通信に対して有効になっています。たいていの場合はこれで⼗分で、 Splunk 内通信に対して推奨できるセキュリティタイプです。ただし、Splunk 間通信を SSL 認証で保護する必要 がある場合は、このマニュアルの「Splunk 間通信の保護について」に記載されているガイドラインを参照してく ださい。 共通名のチェック セキュリティを強化するために、証明書を作成する際には共通名を指定して、証明書の認証時にその共通名を チェックするように Splunk を設定してください。署名された任意の証明書に対して、共通名のチェックを設定で きます。 暗号スイートの指定 Splunk 間および Splunk フォワーダーとインデクサー間の通信に使⽤する暗号スイートを選択、指定することが できます。暗号スイートを追加するには、サーバー SSL 設定スタンザの最後に⾏を追加します。 詳細は、「暗号スイートの決定」を参照してください。 証明書の取得 SSL 証明書の専⾨知識がある場合、普段通りに証明書を作成して、Splunk インスタンスがそれを使⽤するように 設定することができます。 証明書を⼊⼿するために何らかの⼿助けが必要な⽅のために、OpenSSL コマンドを使ったとても簡単な例を⽤意 しました。(OpenSSL は Splunk に同梱されています) 証明書の⾃⼰署名⽅法 サードパーティの証明書の⼊⼿⽅法 Splunk Web ⽤証明書の⾃⼰署名⽅法 Splunk Web ⽤サードパーティの証明書の⼊⼿⽅法 証明書を保有している場合の作業 以下のトピックは、証明書⼊⼿後の、証明書を使⽤するための Splunk の設定⽅法について説明しています。 独⾃の証明書を使った Splunk Web の保護 独⾃の証明書を使⽤するための、Splunk 転送の設定 Splunk 間通信の保護について Windows および Linux での SSL ツールの使⽤について このマニュアルには、デフォルトの⾃⼰署名証明書、または認証局が署名した証明書を使⽤するための、Splunk の設定⽅法が記載されています。証明書を持たない⽅のために、Splunk に同梱されている OpenSSL とコマンド ラインを使った証明書の⽣成の、簡単な例も記載されています。 OpenSSL コマンドラインの使⽤例 このマニュアルには、コマンドラインで Splunk の OpenSSL を使って証明書を作成するための、いくつかの基 本的な例が記載されています。これらの作業を実施するためには、ルート管理者権限が必要です。リモートマシン または仮想マシンで作業を⾏う場合は、全作業を完了するために追加⼿順が必要になることもあります。 Windows プラットフォームで作業している場合、管理者権限でコマンドラインを開く必要があります。ス タートメニューで、.exe アプリケーションを右クリックして [管理者として実⾏ ] を選択してください。 *nix プラットフォームで作業を⾏う場合、ルート管理者としてログインするために sudo を使⽤する必要が あります。 Windows と *nix の差異については、『管理』マニュアルを参照してください。 SSL ツールについて Splunk には、最新バージョンの OpenSSL が $SPLUNK_HOME/splunk/lib に⽤意されています。6.0 の Splunk は、 FIPS 140-2 を有効にした OpenSSL をサポートしています。 証明書の作成と設定に利⽤できる、他のさまざまな SSL ツールを購⼊/ダウンロードして利⽤することができま す。証明書の設定に OpenSSL を使⽤する場合、互換性の問題を回避するために、Splunk に同梱されているバー ジョンを使⽤することを強くお勧めします。Splunk に同梱されているバージョンを確実に使⽤するために、 Windows の場合は環境に $SPLUNK_HOME/splunk/lib または $SPLUNK_HOME\splunk\bin のバージョンを設定してくださ い。 *nix の場合のライブラリパスの例を以下に⽰します。 export LD_LIBRARY_PATH=$SPLUNK_HOME/splunk/lib 38 Windows の場合のライブラリパスの例を以下に⽰します。 set PATH = %PATH%;%SPLUNK_HOME%\bin FIPS について FIPS は法規制に適合するために、いくつかの政府認定版アルゴリズムを使⽤しています。それ⾃体はセキュリ ティ拡張を考慮していないため、システムが遅くなる可能性があります。環境で規制に適合するために FIPS が必 要な場合にのみ、有効にすることをお勧めします。 FIPS を有効にすることを検討している場合は、以下の事項に注意してください。 Splunk は、Linux、Windows、および Solaris 上での OpenSSL と FIPS 140-2 (64 ビット x86) のみをサ ポートしています。 デフォルトで FIPS は無効になっていますが、カーネルが FIPS モードで動作している Linuxマシン上で Splunk を実⾏すると、⾃動的に FIPS が有効になります。 FIPS モジュールは、Splunk が App の実⾏に使⽤する Python インスタンス内の⼀部の暗号アルゴリズム の使⽤を無効にします (md5 と rc4 など)。実⾏する Splunk App が FIPS モードで正常に動作し、それら のアルゴリズムと依存関係がないことを確認してください。 FIPS を有効にするには: 最初に Splunk を開始する前に、$SPLUNK_HOME/etc/splunk-launch.conf を編集して次の⾏を追加します: SPLUNK_FIPS=1 注意: ⾮ FIPS インストールの FIPS へのアップグレードはサポートされていません。FIPS を使⽤するかどうか は、初期インストール時に決定する必要があります。 許可/制限する SSL バージョンの設定 Splunk Enterprise 6.2 には、古いバージョンのプロトコルを制限するためのキーワード sslVersions が⽤意され ています。 アップグレードを容易にするために SSLv3 は最初から⽤意されていますが、アップグレードが完了し たらすぐに無効化する必要があります。デフォルトで Splunk Enterprise は SSLv3 以降のバージョンでの通信を 許可しています。 Splunk Enterprise を FIPS モードで設定する場合、他の設定に関係なく SSLv2 と SSLv3 は常に無効になりま す。 警告: v3 の「POODLE」脆弱性に対処するために、環境にアップグレードを適⽤する際には SSLv3 を削除する ように設定を更新することを強くお勧めします。 1. web.conf で、Splunk Enterprise にサポートさせるバージョン (カンマで区切る) を記載または制限するよう に、sslVersions 属性を更新します。デフォルトでこの属性は *,-sslv2 に設定されます。この場合、SSLv2 より新 しい任意のバージョンが対象となります (⾮推奨)。6.2 で許可されている SSL のバージョンを以下に⽰します。 sslv2 (⾮推奨) sslv3 (⾮推奨) tls1.0 tls1.1 tls1.2 例: sslVersions = tls1.0, tls1.1, tls1.2 構⽂オプション サポートされているすべてのバージョンを選択するには、「*」を使⽤します: sslVersions = * tls1.0 以降のすべてのバージョンを含めるには、「tls」を使⽤します: sslVersions = tls 特定のバージョンを制限するには、その前に「-」を付けます: sslVersions = *, -sslv3 注意: Splunk Enterprise を FIPS モードで設定する場合、この設定に関係なく SSLv2 と SSLv3 は常に無効に なります。 2. inputs.conf で、Splunk Enterprise にサポートさせるバージョン (カンマで区切る) を記載または制限するよう に、sslVersions 属性を更新します。 sslVersions = sslv2, tls1.0, tls1.1, tls1.2 サポートするすべてのバージョンを選択するために、「*」を使⽤できます: sslVersions = * 39 tls1.0 以降のすべてのバージョンを含めるには、「tls」を使⽤します: sslVersions = tls 特定のバージョンを制限するには、バージョンの前に「-」を付けます: sslVersions = *, -sslv3 3. インデクサーと互換性があるようにフォワーダーを設定します。SSL のバージョンの変更または制限 (および SSLV3 の制限) により、フォワーダーとの互換性上の問題が発⽣する可能性があります (特に古いバージョンの Splunk Enterprise が動作している場合)。6.2 が動作しているフォワーダーの場合は、インデクサーの他に各 フォワーダーの inputs.conf および web.conf の設定も更新することで、互換性上の問題を軽減することができま す。 インデクサーおよび SSL の設定と適合するように、フォワーダーを 6.2 に更新してください (下位互換性のため に、6.0 は tls1.0 までをサポートできます)。 4. サーバーを設定し、クライアントとの接続を承認します (例えば、web.conf の承認は、 アントと同じものに編集して⾏います)。 sslVersions 属性をクライ SSL 証明書の取得 証明書の⾃⼰署名⽅法 ここでは、フォワーダーからインデクサーへの通信および Splunk 間通信を保護するための、OpenSSL を使って 証明書に⾃⼰署名をする⽅法の 1 つを説明しています。 すでに必要な証明書の⽣成⽅法が分かっている場合は、このトピックをスキップしてこのマニュアルに記載されて いる設定ステップに移動しても構いません。 Splunk ⽤の署名された証明書の準備⽅法 独⾃の証明書を使⽤するための、Splunk 転送の設定 Splunk 間通信の保護について ⾃⼰署名証明書は、組織内または既知のエンティティ間で⾏われるデータ通信に利⽤するのに適しています。何ら かの理由で未知のエンティティと通信する必要がある場合は、認証局が署名した証明書を使ってデータを保護する ことをお勧めします。 作業を開始する前に この説明で、$SPLUNK_HOME は Splunk のインストールディレクトリを表しています。Windows の場合、デフォル トで Splunk は C:\Program Files\splunk にインストールされます。⼤部分の UNIXプラットフォームでは、デフォ ルトのインストールディレクトリは /opt/splunk になります。Mac OSの場合は、/Applications/splunk になりま す。Windows および *nix での作業の詳細は、『管理マニュアル』を参照してください。 環境が *nix の場合は $SPLUNK_HOME/splunk/lib に、Windows の場合は $SPLUNK_HOME\splunk\bin 内のバージョンを設 定して、Splunk に同梱されているバージョンの OpenSSL を使⽤するようにしてください。そのために、以下の 作業を⾏うことができます。 証明書を作成する前に、$SPLUNK_HOME/bin/setSplunkEnv を実⾏します。 または $SPLUNK_HOME/bin/ に移動して、./openssl を使って証明書⽣成コマンドを実⾏します。 証明書⽤の新規ディレクトリの作成 証明書の作成時には、作業⽤の新しいディレクトリを作成してください。この例で は、$SPLUNK_HOME/etc/auth/mycerts を使⽤しています。 # mkdir $SPLUNK_HOME/etc/auth/mycerts # cd $SPLUNK_HOME/etc/auth/mycerts Splunk は、$SPLUNK_HOME/etc/auth に保管されている既存の証明書を上書きすることがないように、新しいフォル ダを作成することを強くお勧めします。新しいディレクトリを使って作業することで、Splunk に同梱されている $SPLUNK_HOME/etc/auth 内の証明書を保護し、必要に応じて他の Splunk コンポーネントで使⽤することができま す。 ルート証明書の作成 まず、ルート認証局としての役割を果たすルート証明書を作成します。このルート認証局を使って、⽣成したサー バー証明書に署名して、それを Splunk インスタンスに配布することができます。 ルート証明書⽤の秘密鍵の⽣成 1. 証明書に署名するための鍵を作成します。 40 *nix の場合: # openssl genrsa -des3 -out myCAPrivateKey.key 1024 Windows の場合、openssl.cnf ファイルの場所を追加する必要があります。 >openssl genrsa -des3 -out myCAPrivateKey.key 1024 この例では、DES3 暗号および 1024 ビットのキー⻑を使⽤していることに注意してください。機密データの場 合は、可能な限り 2048 ビット以上のキー⻑を使⽤することをお勧めします。 2. 鍵のパスワードの作成を要求するメッセージが表⽰されたら、パスワードを作成します。 このステップが完了すると、ディレクトリに秘密鍵 myCAPrivateKey.key が表⽰されます。 証明書の⽣成と署名 1. 新しい証明書署名要求 (CSR) を⽣成します。 *nix の場合: # openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr Windows の場合: >openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr -config $SPLUNK_HOME\openssl.cnf 2. プロンプトが表⽰されたら、$SPLUNK_HOME/etc/auth/mycerts/myCAPrivateKey.key 内の秘密鍵に対して作成したパス ワードを⼊⼒します。 3. 要求された証明書情報を指定します (Splunk 環境で共通名チェックを使⽤する場合は共通名も含めて)。 ディレクトリに、新しい CSR 4. CSR myCACertificate.csr myCACertificate.csr が表⽰されます。 を使って、公開証明書を⽣成します。 *nix の場合: # openssl x509 -req -in myCACertificate.csr -sha1 -signkey myCAPrivateKey.key -CAcreateserial -out myCACertificate.pem -days 1095 Windows の場合: >openssl x509 -req -in myCACertificate.csr -sha1 -signkey myCAPrivateKey.key -CAcreateserial -out myCACertificate.pem -days 1095 5. プロンプトが表⽰されたら、秘密鍵 ディレクトリに、新しいファイル 公開 CA 証明書です。 myCAPrivateKey.key myCACertificate.pem のパスワードを⼊⼒します。 が表⽰されます。これは、Splunk インスタンスに配布する サーバー証明書の作成 認証局としての役割を果たすルート証明書を作成したら、サーバー証明書を作成して署名する必要があります。 重要: この例は、新しい秘密鍵とサーバー証明書を作成する⽅法を表しています。このサーバー証明書はすべて のフォワーダー、インデクサー、および管理ポートで通信する Splunk インスタンスに配布することができます。 各インスタンスで個別の共通名を使⽤する場合は、ここで説明している⼿順を繰り返して、Splunk インスタンス に対する別個の証明書 (それぞれが別の共通名を持つ) を作成してください。 たとえば、複数のフォワーダーを設定する場合、以下の例を使⽤してインデクサー⽤の証明書 myServerCertificate.pem を作成して、次に同じルート CA を使⽤して myForwarderCertificate.pem を作成し、その証 明書をフォワーダーにインストールすることができます。インデクサーは、同じルート認証局により署名され、適 切に⽣成、設定されたフォワーダーからの証明書のみを受け付けます。 フォワーダーとインデクサーの設定の詳細については、「独⾃の証明書を使⽤するための Splunk 転送の設定」を 参照してください。 サーバー証明書⽤の鍵の⽣成 1. サーバー証明書⽤の新しい RSA 秘密鍵を⽣成します。この例でも、DES3 暗号と 1024 ビットのキー⻑を使⽤ します。 *nix の場合: # openssl genrsa -des3 -out myServerPrivateKey.key 1024 Windows の場合: # openssl genrsa -des3 -out myServerPrivateKey.key 1024 41 2. 鍵の新たなパスワードの作成を要求するメッセージが表⽰されたら、パスワードを作成します。 新しい鍵 myServerPrivateKey.key が作成されます。この鍵は、サーバー証明書の⼀部としてインストールした任意 の Splunk インスタンスの送信データの暗号化に使⽤されます。 新しいサーバー証明書の⽣成と署名 1. 新しいサーバー秘密鍵 myServerPrivateKey.key を使って、サーバー証明書の CSR を⽣成します。 *nix の場合: # openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr Windows の場合: openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr -config $SPLUNK_HOME\openssl.cnf 2. プロンプトが表⽰されたら、秘密鍵 myServerPrivateKey.key にパスワードを指定します。 3. 要求された証明書の情報を指定します。共通名のチェックにより認証するように Splunk を設定する場合は、共 通名も指定します。 ディレクトリに、新しい CSR myServerCertificate.csr 4. CSR および CA 証明書と秘密鍵を使ってサーバー証明書を⽣成します。 myServerCertificate.csr が表⽰されます。 *nix の場合: # openssl x509 -req -in myServerCertificate.csr -sha1 -CA myCACertificate.pem -CAkey myCAPrivateKey.key CAcreateserial -out myServerCertificate.pem -days 1095 Windows の場合: # openssl x509 -req -in myServerCertificate.csr -sha1 -CA myCACertificate.pem -CAkey myCAPrivateKey.key CAcreateserial -out myServerCertificate.pem -days 1095 5. プロンプトが表⽰されたら、認証局秘密鍵 myCAPrivateKey.key のパスワードを⼊⼒します。この署名には、作成 したサーバー鍵ではなく、ご⾃分の秘密鍵を使⽤してください。 ディレクトリに、新しい公開サーバー証明書 myServerCertificate.pem が表⽰されます。 次のステップ この時点で作成したディレクトリ内には、以下のファイルが存在しているはずです。これらのファイルを利⽤し て、管理ポート経由で通信を⾏うインデクサー、フォワーダー、および Splunk インスタンスの設定を⾏うことが できます。 myServerCertificate.pem myServerPrivateKey.key myCACertificate.pem 必要な証明書を⼊⼿したら、サーバー証明書を準備して (中間証明書の追加も含む)、次に Splunk がそれらを使⽤ するように設定する必要があります。 Splunk への証明書の設定⽅法については、「Splunk ⽤の署名された証明書の準備⽅法」を参照してくださ い。 転送⽤の証明書認証の設定については、「独⾃の証明書を使⽤するための Splunk 転送の設定」を参照して ください。 Splunk 間通信のための証明書認証の設定⽅法の詳細は、「Splunk 間通信の保護について」を参照してくだ さい。 サードパーティが署名した証明書の⼊⼿⽅法 ここでは、Splunk に同梱されている OpenSSL を使った、サードパーティ証明書の⼊⼿⽅法の 1 つを説明してい ます。この証明書は、フォワーダーからインデクサーへの通信や Splunk 間通信を保護する⽬的で使⽤することが できます。 証明書を⼊⼿するために、保護されたブラウザと Splunk Web 間の通信を使⽤できます。詳細は、「Splunk Web ⽤のサードパーティが署名した証明書の⼊⼿」を参照してください。 すでに必要な証明書の⽣成⽅法が分かっているまたは証明書を所有している場合は、このトピックをスキップして このマニュアルの後半に記載されている設定ステップに移動しても構いません。 独⾃の証明書を使⽤するための、Splunk 転送の設定 Splunk 間通信の保護について 注意: 設定に複数の共通名を使⽤する場合、ここに記載されている⼿順を繰り返して、同じルート CA を使って 独⾃の共通名を持つ各サーバー証明書を作成し、その後それらを使⽤するように Splunk インスタンスを設定する ことができます。フォワーダーとインデクサーの設定の詳細については、「独⾃の証明書を使⽤するための 42 Splunk 転送の設定」を参照してください。 作業を開始する前に この説明で、$SPLUNK_HOME は Splunk のインストールディレクトリを表しています。Windows の場合、デフォル トで Splunk は C:\Program Files\splunk にインストールされます。⼤部分の UNIXプラットフォームでは、デフォ ルトのインストールディレクトリは /opt/splunk になります。Mac OSの場合は、/Applications/splunk になりま す。Windows および *nix での作業の詳細は、『管理マニュアル』を参照してください。 環境が *nix の場合は $SPLUNK_HOME/splunk/lib に、Windows の場合は $SPLUNK_HOME/splunk/bin 内のバージョンを設 定して、Splunk に同梱されているバージョンの OpenSSL を使⽤するようにしてください。 証明書⽤の新規ディレクトリの作成 証明書の作成時には、作業⽤の新しいディレクトリを作成してください。この例で は、$SPLUNK_HOME/etc/auth/mycerts を使⽤しています。 # mkdir $SPLUNK_HOME/etc/auth/mycerts # cd $SPLUNK_HOME/etc/auth/mycerts にある既存の証明書を上書きすることがないように、新しい証明書と鍵を保管するための新 しいフォルダを作成することを強くお勧めします。新しいディレクトリを使って作業することで、Splunk に同梱 されている証明書を保護し、必要に応じて他の Splunk コンポーネントで使⽤することができます。 $SPLUNK_HOME/etc/auth サーバー証明書の要求 認証局に送信するには、証明書署名要求 (CSR) を作成して、それに署名します。 重要: この例は、新しい秘密鍵を作成し、サーバー証明書を要求する⽅法を表しています。このサーバー証明書 はすべてのフォワーダー、インデクサー、および管理ポートで通信する Splunk インスタンスに配布することがで きます。各インスタンスで個別の共通名を使⽤する場合は、ここで説明している⼿順を繰り返して、Splunk イン スタンスに対する別個の証明書 (それぞれが別の共通名を持つ) を作成してください。 たとえば、複数のフォワーダーを設定する場合、以下の例を使⽤してインデクサー⽤の証明書 myServerCertificate.pem を作成して、次に同じルート CA を使⽤して myForwarderCertificate.pem を作成し、その証 明書をフォワーダーにインストールすることができます。インデクサーは、同じルート認証局により署名され、適 切に⽣成、設定されたフォワーダーからの証明書のみを受け付けます。 フォワーダーとインデクサーの設定の詳細については、「独⾃の証明書を使⽤するための Splunk 転送の設定」を 参照してください。 サーバー証明書⽤の秘密鍵の⽣成 1. 新しい秘密鍵を作成します。以下の例では DES3 暗号と 1024 ビットのキー⻑を使⽤しています。可能な場合 は 2048 ビット以上のキー⻑を使⽤することをお勧めします。 *nix の場合: # openssl genrsa -des3 -out myServerPrivateKey.key 1024 Windows の場合: >openssl genrsa -des3 -out myServerPrivateKey.key 1024 -config $SPLUNK_HOME\openssl.cnf 2. 鍵のパスワードの作成を要求するメッセージが表⽰されたら、パスワードを作成します。 作業が完了したら、ディレクトリ内に新しい秘密鍵 書署名要求 (CSR) に署名します。 myServerPrivateKey.key が作成されます。この鍵を使って証明 新しい証明書署名要求 (CSR) の⽣成 1. 新しい秘密鍵 myServerPrivateKey.key を使って、サーバー証明書の CSR を⽣成します。 *nix の場合: # openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr Windows の場合: >openssl req -new -key myServerPrivateKey.key -out myServerCertificate.csr -config $SPLUNK_HOME\openssl.cnf 2. プロンプトが表⽰されたら、秘密鍵 myServerPrivateKey.key に対して作成したパスワードを⼊⼒します。 3. 要求された証明書に関する情報を指定します。共通名チェックを使⽤する場合は、証明書の詳細の⼊⼒時に共通 名も指定してください。 作業が完了すると、ディレクトリ内に新しい CSR myServerCertificate.csr サーバー証明書と公開鍵のダウンロードと検証 43 が表⽰されます。 1. CSR を認証局 (CA) に送って、新しいサーバー証明書を要求します。使⽤する認証局によって、要求⼿続きは 異なります。 2. 準備が完了したら、認証局から新しいサーバー証明書をダウンロードします。このマニュアルの例では、この証 明書を myServerCertificate.pem と呼ぶことにします。 3. また、認証局の公開 CA 証明書もダウンロードします。このマニュアルの例では、この証明書を myCACertificate.pem と呼ぶことにします。 認証局が PEM 形式の証明書を提供していない場合は、そのファイルタイプに応じた OpenSSL コマンドを使って 証明書を変換する必要があります。変換⽅法の詳細は、OpenSSL のドキュメントを参照してください。 4. 内容を確認して、必要なものがすべて揃っていることを確認してください。 「Issuer」エントリは CA の情報を参照していなければなりません。 「Subject」エントリには、先ほどの CSR 作成時に⼊⼒した情報 (国名、組織名、共通名など) が表⽰され ていなければなりません。 次のステップ この時点で作成したディレクトリ内には、以下のファイルが存在しているはずです。これらのファイルを利⽤し て、管理ポート経由で通信を⾏うインデクサー、フォワーダー、および Splunk インスタンスの設定を⾏うことが できます。 myServerCertificate.pem myServerPrivateKey.key myCACertificate.pem 必要な証明書を⼊⼿したら、サーバー証明書を準備して (中間証明書の追加も含む)、次に Splunk がその証明書を 使⽤するように設定する必要があります。 Splunk への証明書の設定⽅法については、「Splunk ⽤の署名された証明書の準備⽅法」を参照してくださ い。 転送⽤の証明書認証の設定については、「独⾃の証明書を使⽤するための Splunk 転送の設定」を参照して ください。 Splunk 間通信のための証明書認証の設定⽅法の詳細は、「Splunk 間通信の保護について」を参照してくだ さい。 Splunk ⽤の署名された証明書の準備⽅法 証明書を⼊⼿したら、サーバー証明書と鍵を単⼀のファイルにまとめて、Splunk が使⽤できる状態にする必要が あります。 まだ証明書を持っておらず、⼊⼿する必要がある⽅のために、以下のトピックでは OpenSSL を使⽤する基本的 な例を説明しています。 証明書の⾃⼰署名⽅法 サードパーティが署名した証明書の⼊⼿⽅法 注意: Splunk で SSL を設定する場合、証明書と公開鍵が x509 フォーマット、秘密鍵が RSA フォーマットに なっていることを確認してください。 単⼀の PEM ファイルの作成 署名サーバー証明書、サーバーの秘密鍵、および CA 公開鍵を単⼀の PEM ファイルに統合します。 ここの例では、「証明書の⾃⼰署名⽅法」および「サードパーティが署名した証明書の⼊⼿⽅法」で使⽤したファ イル名を使⽤します。 以下は、*nix ⽤です。 # cat myServerCertificate.pem myServerPrivateKey.key myCACertificate.pem > myNewServerCertificate.pem 以下は、Windows ⽤です。 >type myServerCertificate.pem myServerPrivateKey.key myCACertificate.pem > myNewServerCertificate.pem 作成するファイル myNewServerCertificate には、以下の順序で情報が含まれていなければなりません。 サーバー証明書 (myServerCertificate.pem) 秘密鍵 (myServerPrivateKey.key) 認証局公開鍵 (myCACertificate.pem) 適切に連結された証明書の例を以下に⽰します。 -----BEGIN CERTIFICATE----MIICUTCCAboCCQCscBkn/xey1TANBgkqhkiG9w0BAQUFADBtMQswCQYDVQQGEwJV ... <Server Certificate> ... 44 8/PZr3EuXYk1c+N5hgIQys5a/HIn -----END CERTIFICATE---------BEGIN RSA PRIVATE KEY----Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,CFCECC7976725DE5 S+DPcQ0l2Z1bk71N3cBqr/nwEXPNDQ4uqtecCd3iGMV3B/WSOWAQxcWzhe9JnIsl ... <Server Private Key - Passphrase protected> ... -----END RSA PRIVATE KEY---------BEGIN CERTIFICATE----MIICUTCCAboCCQCscBkn/xey1TANBgkqhkiG9w0BAQUFADBtMQswCQYDVQQGEwJV ... <Certificate Authority Public Key> ... 8/PZr3EuXYk1c+N5hgIQys5a/HIn -----END CERTIFICATE----- 証明書チェーンの設定⽅法 複数の証明書を使⽤する場合は、サーバーの証明書ファイルの最後に中間証明書を追加してください。必要な数の 証明書を追加することができます。ルートまで、階層の降順に追加してください。 証明書は以下の順番で連結する必要があります。 [ server certificate] [ intermediate certificate] [ root certificate (if required) ] 証明書チェーンの例を以下に⽰します。 -----BEGIN CERTIFICATE----... (certificate for your server)... -----END CERTIFICATE---------BEGIN CERTIFICATE----... (the intermediate certificate)... -----END CERTIFICATE---------BEGIN CERTIFICATE----... (the root certificate for the CA)... -----END CERTIFICATE----- 次のステップ 必要な証明書が揃ったら、Splunk がそれらを使⽤するように設定を⾏います。 転送⽤の証明書認証の設定については、「独⾃の証明書を使⽤するための Splunk 転送の設定」を参照して ください。 Splunk 間通信のための証明書認証の設定⽅法の詳細は、「Splunk 間通信の保護について」を参照してくだ さい。 Splunk Web ⽤の⾃⼰署名証明書 ここでは、Splunk に同梱されている OpenSSL を使った、コマンドラインからの基本的な⾃⼰署名証明書の作成 例を説明していきます。 ⾃⼰署名証明書の作成⽅法は、社内規則、ご利⽤のプラットフォーム、および使⽤するツールによってさまざまで す。すでにこれらの証明書と鍵を⽣成している場合、または証明書の⽣成経験がある場合は、ここをスキップして このマニュアルの「独⾃の証明書を使った Splunk Web の保護」に進んでも構いません。 ⾃⼰署名証明書はご⾃分の組織により署名されているため、それにブラウザ証明書ストアは含まれていません。そ のため、Web ブラウザは⾃⼰署名証明書を「信頼できない」ものとみなします。そのため、ユーザーには警告 メッセージが表⽰され、場合によってはユーザーのアクセスが禁⽌されることもあります。 ⾃⼰署名証明書は、使⽤するすべてのブラウザに独⾃の CA を追加できる、社内または既知のエンティティ間で の、ブラウザから Splunk Web への通信に使⽤するのに適しています。その他の状況では、CA の署名証明書を 使⽤することをお勧めします。詳細は、「Splunk Web ⽤のサードパーティが署名した証明書の⼊⼿」を参照し てください。 作業を開始する前に この説明で、$SPLUNK_HOME は Splunk のインストールディレクトリを表しています。Windows の場合、デフォル トで Splunk は C:\Program Files\splunk にインストールされます。⼤部分の UNIXプラットフォームでは、デフォ ルトのインストールディレクトリは /opt/splunk になります。Mac OSの場合は、/Applications/splunk になりま 45 す。Windows および *nix での作業の詳細は、『管理マニュアル』を参照してください。 環境が *nix の場合は $SPLUNK_HOME/splunk/lib に、Windows の場合は $SPLUNK_HOME/splunk/bin 内のバージョンを設 定して、Splunk に同梱されているバージョンの OpenSSL を使⽤するようにしてください。 認証局とする新しいルート証明書の⽣成 1. 証明書と鍵⽤の新しいディレクトリを作成します。この例では、$SPLUNK_HOME/etc/auth/mycerts を使⽤します。 既存の証明書を上書きしないように、新しい証明書は $SPLUNK_HOME/etc/auth/splunkweb とは違うディレクトリに保 管することをお勧めします。そうすることによって、必要に応じて他の Splunk コンポーネント で、$SPLUNK_HOME/etc/auth/splunkweb 内の Splunk に同梱されている証明書を使⽤できます。 注意: 「証明書の⾃⼰署名⽅法」の説明に従って⾃⼰署名証明書を作成した場合は、ルート証明書をディレクト リにコピーして、次のステップ「Splunk Web ⽤の新しい秘密鍵の作成」をスキップすることができます。 2. 新しい RSA 秘密鍵を作成します。この例では、1024 ビットのキー⻑を使⽤しています。 # openssl genrsa -des3 -out myCAPrivateKey.key 1024 Windows の場合、openssl.cnf ファイルの場所を追加しなければならない場合もあります。 >openssl genrsa -des3 -out myCAPrivateKey.key 1024 -config $SPLUNK_HOME\openssl.cnf この例では 1024 ビットのキー⻑を使⽤していますが、ご利⽤のブラウザがサポートしている場合はそれ以上の キー⻑を使⽤することもできます。機密データの場合は、可能な限り 2048 ビット以上のキー⻑を使⽤すること をお勧めします。 3. プロンプトが表⽰されたら、パスワードを作成します。 ディレクトリに秘密鍵 myCAPrivateKey.key 4. ルート証明書の秘密鍵 が表⽰されます。これがルート証明書の秘密鍵になります。 myCAPrivateKey.key を使って、証明書署名要求を⽣成します。 *nix の場合: # openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr Windows の場合: >openssl req -new -key myCAPrivateKey.key -out myCACertificate.csr 5. 秘密鍵 myCAPrivateKey.key -config $SPLUNK_HOME\openssl.cnf にパスワードを指定します。 ディレクトリに、新しい CSR myCACertificate.csr が表⽰されます。 6. CSR を使って新しいルート証明書を⽣成して、それにご⾃分の秘密鍵で署名します。 *nix の場合: # openssl x509 -req -in myCACertificate.csr -signkey myCAPrivateKey.key -out myCACertificate.pem -days 3650 Windows の場合: >openssl x509 -req -in myCACertificate.csr -signkey myCAPrivateKey.key -out myCACertificate.pem -days 3650 -config $SPLUNK_HOME\openssl.cnf 7. プロンプトが表⽰されたら、秘密鍵 ディレクトリに、新しい証明書 myCAPrivateKey.key myCACertificate.pem にパスワードを指定します。 が表⽰されます。これが公開証明書になります。 Splunk Web ⽤の新しい秘密鍵の作成 1. 新しい秘密鍵を作成します。 *nix の場合: # openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024 Windows の場合: >openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024 -config $SPLUNK_HOME\openssl.cnf 2. プロンプトが表⽰されたら、パスワードを作成します。 ディレクトリに、新しい鍵 mySplunkWebPrivateKey.key が表⽰されます。 3. 鍵からパスワードを削除します。(現在 Splunk Web はパスワードで保護された秘密鍵をサポートしていませ ん。) 46 *nix の場合: # openssl rsa -in mySplunkWebPrivateKey.key -out mySplunkWebPrivateKey.key Windows の場合: >openssl rsa -in mySplunkWebPrivateKey.key -out mySplunkWebPrivateKey.key -config $SPLUNK_HOME\openssl.cnf パスワードが削除されたことを確認するには、以下のコマンドを実⾏します。 *nix の場合: # openssl rsa -in mySplunkWebPrivateKey.key -text Windows の場合: >openssl rsa -in mySplunkWebPrivateKey.key -text -config $SPLUNK_HOME\openssl.cnf パスワードを⼊⼒せずに、証明書の内容を参照できるはずです。 サーバー証明書の作成と署名 1. 秘密鍵 mySplunkWebPrivateKey.key を使って、新しい証明書署名要求を作成します。 *nix の場合: # openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr Windows の場合: >openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr -config $SPLUNK_HOME\openssl.cnf ディレクトリに CSR mySplunkWebCert.csr 2. ルート証明書秘密鍵 myCAPrivateKey.key が表⽰されます。 で CSR に⾃⼰署名します。 *nix の場合: # openssl x509 -req -in mySplunkWebCert.csr -CA myCACertificate.pem -CAkey myCAPrivateKey.key -CAcreateserial -out mySplunkWebCert.pem -days 1095 Windows の場合: >openssl x509 -req -in mySplunkWebCert.csr -CA myCACertificate.pem -CAkey myCAPrivateKey.key -CAcreateserial -out mySplunkWebCert.pem -days 1095 -config $SPLUNK_HOME\openssl.cnf 3. プロンプトが表⽰されたら、ルート証明書秘密鍵 ディレクトリに証明書 mySplunkWebCert.pem myCAPrivateKey.key のパスワードを⼊⼒します。 が追加されます。これがサーバー証明書になります。 単⼀の PEM ファイルの作成 サーバー証明書と公開証明書を以下の順序で単⼀の PEM ファイルにまとめます。 証明書チェーンの設定 複数の証明書を使⽤する場合は、サーバーの証明書ファイルの最後に、中間証明書を以下の順番で追加してくださ い。 [ server certificate] [ intermediate certificate] [ root certificate (if required) ] 証明書チェーンの例を以下に⽰します。 -----BEGIN CERTIFICATE----... (certificate for your server)... -----END CERTIFICATE---------BEGIN CERTIFICATE----... (the intermediate certificate)... -----END CERTIFICATE---------BEGIN CERTIFICATE----... (the root certificate for the CA)... -----END CERTIFICATE----- 47 次のステップ 証明書が⽤意できたら配布して、splunkd と Splunk Web がそれを使⽤するように設定する必要があります。詳 細は、このマニュアルの「独⾃の証明書を使った Splunk Web の保護」を参照してください。 Splunk Web ⽤のサードパーティが署名した証明書の⼊⼿ ここでは、Splunk Web の SSL 認証/暗号化を設定するために必要な、サードパーティが署名した証明書の、基 本的な作成例について説明していきます。 ここで説明する⼿順は、Splunk 固有の作業ではありません。これらの証明書の作成⽅法は、社内規則、ご利⽤の ネットワーク構造、および使⽤するツールによってさまざまです。すでにこれらの証明書と鍵を⽣成している場 合、またはサードパーティ証明書の作成経験がある場合は、ここをスキップしてこのマニュアルの「独⾃の証明書 を使った Splunk Web の保護」に進んでも構いません。 作業を開始する前に この説明で、$SPLUNK_HOME は Splunk のインストールディレクトリを表しています。Windows の場合、デフォル トで Splunk は C:\Program Files\splunk にインストールされます。⼤部分の UNIXプラットフォームでは、デフォ ルトのインストールディレクトリは /opt/splunk になります。Mac OSの場合は、/Applications/splunk になりま す。Windows および *nix での作業の詳細は、『管理マニュアル』を参照してください。 環境が *nix の場合は $SPLUNK_HOME/lib に、Windows の場合は $SPLUNK_HOME/bin 内のバージョンを設定して、 Splunk に同梱されているバージョンの OpenSSL を使⽤するようにしてください。 Splunk Web ⽤の新しい秘密鍵の作成 1. 独⾃の証明書と鍵⽤の新しいディレクトリを作成します。この例では、$SPLUNK_HOME/etc/auth/mycerts を使⽤しま す。 既存の証明書を上書きしないように、新しい証明書は $SPLUNK_HOME/etc/auth/splunkweb とは違うディレクトリに保 管することをお勧めします。そうすることによって、必要に応じて他の Splunk コンポーネントで、Splunk に同 梱されている証明書を使⽤できます。 2. 新しい秘密鍵を作成します。この例では 1024 ビットのキー⻑を使⽤していますが、ご利⽤のブラウザがサ ポートしている場合はそれ以上のキー⻑を使⽤することもできます。機密データの場合は、可能な限り 2048 ビット以上のキー⻑を使⽤することをお勧めします。 # openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024 Windows の場合、openssl.cnf ファイルの場所を追加しなければならないことがあることに注意してください。 >openssl genrsa -des3 -out mySplunkWebPrivateKey.key 1024 -config $SPLUNK_HOME\openssl.cnf 3. プロンプトが表⽰されたら、パスワードを作成します。 ディレクトリに新しい秘密鍵 できます。 mySplunkWebPrivateKey.key が追加されます。この鍵を使って CSR に署名することが 4. 秘密鍵からパスワードを削除します (Splunk Web は秘密鍵のパスワードをサポートしていません)。 *nix の場合: # openssl rsa -in mySplunkWebPrivateKey.key -out mySplunkWebPrivateKey.key Windows の場合: >openssl rsa -in mySplunkWebPrivateKey.key -text -config $SPLUNK_HOME\openssl.cnf パスワードが正常に削除されたことを確認するには、以下のコマンドを使⽤します。 *nix の場合: # openssl rsa -in mySplunkWebPrivateKey.key -text Windows の場合: >openssl rsa -in mySplunkWebPrivateKey.key -text -config $SPLUNK_HOME\openssl.cnf オリジナルの鍵のパスフレーズの⼊⼒を要求するプロンプトが表⽰されます。(鍵からのパスフレーズの削除を検 証するため) パスワードが正常に削除されていれば、パスワードを⼊⼒せずに証明書の内容を参照できます。 認証局 (CA) 要求の作成とサーバー証明書の⼊⼿ 1. 秘密鍵 mySplunkWebPrivateKey.key を使って、新しい証明書署名要求を作成します。 *nix の場合: 48 # openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr Windows の場合: >openssl req -new -key mySplunkWebPrivateKey.key -out mySplunkWebCert.csr -config $SPLUNK_HOME\openssl.cnf Windows プラットフォームの注意事項: 次のようなエラーが表⽰された場合 Unable to load config info from c:\\build-amd64-5.0.2-20130120-1800\\splunk/ssl/openssl.cnf コマンドプロンプトに以下のコマンドを⼊⼒してから、もう⼀度 openssl コマンドを実⾏してください。 set OPENSSL_CONF=c:/Program Files/Splunk/openssl.cnf 2. この CSR mySplunkWebCert.csr を使って、認証局 (CA) に新しい署名証明書を要求します。署名証明書の要求⼿ 順は、利⽤する認証局が証明書署名要求をどのように取り扱っているかによって異なります。詳細は CA にお問 い合わせください。 3. 認証局から返されたサーバー証明書をダウンロードします。ここでは、これを「mySplunkWebCert.pem」と呼ぶこ とにします。 4. 認証局の公開 CA 証明書をダウンロードします。ここでは、これを「myCAcert.pem」と呼ぶことにします。 5. サーバー証明書と公開 CA 証明書の両⽅が PEM フォーマットであることを確認します。証明書が PEM フォー マットでない場合は、そのファイルタイプに応じた openssl コマンドを使ってファイルを変換してください。DER フォーマットを変換するコマンドの例を以下に⽰します。 x509 -in input.crt -inform DER -out output.crt -outform PEM/x509 -in input.crt -inform DER -out output.crt outform PEM 6. 両⽅の証明書に必要な情報が含まれており、またパスワードで保護されていないことを確認します。 # openssl x509 -in myCACert.pem -text # openssl x509 -in mySplunkWebCert.pem -text >openssl x509 -in myCACert.pem -text -config $SPLUNK_HOME\openssl.cnf >openssl x509 -in mySplunkWebCert.pem -text -config $SPLUNK_HOME\openssl.cnf の発⾏者 (Issuer) 情報は、myCACert.pem の発⾏先 (Subject) 情報でなければなりません (中間 証明書を使⽤している場合を除く)。 mySplunkWebCert.pem 証明書と鍵の単⼀ファイルへの統合 サーバー証明書と公開証明書を以下の順序で単⼀の PEM ファイルにまとめます。 証明書チェーンの設定 複数の証明書を使⽤する場合は、サーバーの証明書ファイルの最後に、中間証明書を以下の順番で追加してくださ い。 [ server certificate] [ intermediate certificate] [ root certificate (if required) ] 証明書チェーンの例を以下に⽰します。 -----BEGIN CERTIFICATE----... (certificate for your server)... -----END CERTIFICATE---------BEGIN CERTIFICATE----... (the intermediate certificate)... -----END CERTIFICATE---------BEGIN CERTIFICATE----... (the root certificate for the CA)... -----END CERTIFICATE----- 中間証明書に署名したルート CA およびすべての中間証明書が、ブラウザ証明書ストア内になければならないこ とに注意してください。 次のステップ 証明書を認証に使⽤するには、Splunk の web.conf ファイルを設定します。詳細は、「独⾃の証明書を使った Splunk Web の保護」を参照してください。 暗号スイートの決定 Splunk 間、Splunk Web、および Splunk フォワーダーとインデクサー間の通信に使⽤する暗号スイートを選 49 択、指定することができます。暗号スイートを追加するには、サーバー SSL 設定スタンザの最後に⾏を追加しま す。 フォワーダーからインデクサーへの証明書認証設定時の、inputs.conf の更新⽅法の例を以下に⽰します。 [splunktcp-ssl:9998] [SSL] password = password requireClientCert = false rootCA = $SPLUNK_HOME/etc/auth/cacert.pem serverCert = $SPLUNK_HOME/etc/auth/server.pem cipherSuite = AES256-SHA256:DHE-RSA-AES256-SHA256 利⽤できる暗号を確認するには: $SPLUNK_HOME/bin/splunk cmd openssl ciphers -v $SPLUNK_HOME/bin/splunk cmd openssl ciphers -v "TLSv1.2" $SPLUNK_HOME/bin/splunk cmd openssl ciphers -v "HIGH" 利⽤できる暗号スイートは、OpenSSL のバージョンに基づいています。実⾏している OpenSSL のバージョンを 確認するには: $SPLUNK_HOME/bin/splunk cmd openssl version SSL による ブラウザから Splunk Web への通信の保 護 Splunk Web の保護について Splunk Web に送信される情報の⼤半は、サーチ要求とその結果です。 ブラウザから Splunk Web への通信を常に保護する必要はないことに注意してください。たとえば、ユーザーが 常に Splunk Web と同じファイアウォールの背後にあるローカルのブラウザからのみ Splunk Web にアクセスす る場合は、セキュリティがさほど重要ではないことがあります。このような場合は、Splunk のデフォルト証明書 を使った単純な暗号化でも⼗分かもしれません。 Splunk Web のデフォルト証明書の詳細は、「Splunk Web で暗号化 (https) を有効にする」または 「web.conf で (https) を有効にする」を参照してください。 デフォルトの証明書で転送するための SSL に関する情報については、「デフォルトの証明書を使⽤する Splunk 転送の設定」を参照してください。 基本的な暗号化を有効にするには、「Splunk Web で暗号化 (https) を有効にする」を参照してください。 ⼀⽅、ファイアウォール外のさまざまな場所からブラウザで Splunk Web にアクセスするような分散環境の場合 は、署名証明書を使って強⼒なセキュリティを採⽤する必要があります。署名証明書を使⽤するための Splunk Web の設定⽅法については、「トラッキング時の証明書を使った Splunk Web の保護」を参照してください。 署名証明書を使⽤してブラウザから Splunk Web への通信セキュリティを強化するには、さまざまな⽅法が存在 しています。 認証付きの保護された暗号化の場合、デフォルトの証明書を署名証明書に置換することができます。 Splunk が提供するデフォルトの証明書を、要求した信頼できる認証局からの証明書に置換します。これが もっとも安全な⽅法で、セキュリティが重要な場合はこの⽅法を利⽤することをお勧めします。 認証局証明書の⼊⼿⽅法については、「Splunk Web ⽤のサードパーティが署名した証明書の⼊⼿」を参照 してください。 保護された認証に⾃⼰署名証明書を使⽤することもできますが、そのような証明書は既知の信頼されている 認証局ではなく⾃⾝が署名しているため、ブラウザが証明書ストアであなたを認証局として認識せず、結果 的に証明書が信頼されないことに注意してください。⾃⼰署名証明書を有効にするには、Splunk Web にア クセスする各ブラウザの証明書ストアに証明書を追加する必要があります。 ⾃⼰署名証明書の作成⽅法については、「Splunk Web ⽤の⾃⼰署名証明書」を参照してください。 署名証明書を使⽤する場合、共通名チェックをオンにして SSL 設定をさらに強化することができま す。 共通名チェックでは、各通信インスタンスの証明書内の共通名が⼀致する必要があり、新たなセキュリティ 層が追加されます。共通名チェックは証明書の作成時に有効にできます。また、認証時に共通名をチェック するように、Splunk を設定する必要があります。 Splunk で証明書を使⽤するための設定および共通名の詳細は、「独⾃の証明書を使った Splunk Web の保護」 を参照してください。 Splunk Web で暗号化 (https) を有効にする ここでは、Splunk Web を使って、ブラウザから Splunk Web への https 通信を有効にする⽅法について説明し ていきます。Splunk は HTTPS または HTTP を待機できますが、両⽅を待機することはできません。 Splunk Web で利⽤できる単純暗号化は、同梱されているデフォルトの証明書を使⽤しています。インストール 50 される各 Splunk にはすべて同じデフォルトの証明書が同梱されているため、この⽅法はセキュリティがあまり強 くはありません。セキュリティを重視する場合は、デフォルトの証明書を変更して、適切な認証⼿段を設定するこ とでセキュリティを強化することをお勧めします。デフォルト証明書の変更⽅法については、「独⾃の証明書を 使った Splunk Web の保護」を参照してください。 Splunk Web を使って HTTPS を有効にするには: 1. Splunk Web で、[システム] > [システム設定] を選択します。 2. [Splunk Web で SSL (HTTPS) を有効にしますか?] で、[はい] ボタンを選択します。 暗号化を有効にすると、Splunk はデフォルトの証明書を指すように設定されています。以下のデフォルト設定 は、$SPLUNK_HOME/etc/auth/web.conf に存在しています。 [settings] enableSplunkWebSSL = true privKeyPath = etc/auth/splunkweb/privkey.pem caCertPath = etc/auth/splunkweb/cert.pem 3. Splunk Web を再起動します。 これで、Splunk Web にアクセスする際には、URL の先頭に「https://」を追加する必要があります。 web.conf で暗号化 (https) を有効にする 設定ファイルを使って HTTPS を有効にすることができます。ローカルディレクトリに存在していない場 合は、デフォルト版のファイルを $SPLUNK_HOME/etc/system/default から、ローカルディレクトリ $SPLUNK_HOME/etc/system/local/、または $SPLUNK_HOME/etc/apps/ 内の独⾃のカスタム App ディレクトリにコピーしま す。設定ファイルの⼀般情報については、「設定ファイルについて」を参照してください。 web.conf ここで有効にする暗号化は、さほど安全ではありません。セキュリティを重視する場合は、デフォルトの証明書を 変更して、適切な認証⼿段を設定することでセキュリティを強化することをお勧めします。デフォルト証明書の変 更⽅法については、「独⾃の証明書を使った Splunk Web の保護」を参照してください。 web.conf で HTTPS を有効にするには: 1. enableSplunkWebSSL 属性に true を設定します。 [settings] httpport = <https port number> enableSplunkWebSSL = true 注意: デフォルトでは暗号化を有効にすると、Splunk はデフォルトの証明書を指すように設定されています。こ の設定は、$SPLUNK_HOME/etc/auth/web.conf にあります。 [settings] enableSplunkWebSSL = true privKeyPath = etc/auth/splunkweb/privkey.pem caCertPath = etc/auth/splunkweb/cert.pem 2. 「Splunk の開始」の説明に従って、Splunk Web を再起動します。 これで、Splunk Web にアクセスする際には、URL の先頭に「https://」を追加する必要があります。 独⾃の証明書を使った Splunk Web の保護 この例は、すでに⾃⼰署名証明書を⽣成しているか、またはサードパーティの証明書を購⼊していることを前提に しています。まだ⼊⼿しておらず、何をすればよいか分からない場合は、以下のような簡単な例を参照してくださ い。 Splunk Web ⽤の⾃⼰署名証明書 Splunk Web ⽤のサードパーティが署名した証明書の⼊⼿ 注意: 現在 Splunk Web はパスワードで保護された秘密鍵をサポートしていません。Splunk Web の証明書の設 定を⾏う前に、鍵からパスワードを削除してください。 開始前に:新しいディレクトリへの証明書のコピー サーバー証明書を $SPLUNK_HOME/etc/auth/splunkweb、または ピーしてください。 以下の例では、Web 証明書 mySplunkWebCertificate.pem $SPLUNK_HOME/etc/auth および秘密鍵 mySplunkWebPrivateKey.key *nix: # cp $SPLUNK_HOME/etc/auth/mycerts/mySplunkWebCertificate.pem $SPLUNK_HOME/etc/auth/mycerts/mySplunkWebPrivateKey.key $SPLUNK_HOME/etc/auth/splunkweb 51 内の独⾃の証明書リポジトリにコ を使⽤しています。 Windows: copy $SPLUNK_HOME\etc\auth\mycerts\mySplunkWebCertificate.pem $SPLUNK_HOME\etc\auth\splunkweb\ copy $SPLUNK_HOME\etc\auth\mycerts\mySplunkWebPrivateKey.key $SPLUNK_HOME\etc\auth\splunkweb\ 注意: $SPLUNK_HOME/etc/auth/splunkweb/ にある既存の証明書を上書きしたり、削除したりはしないでください。こ の場所にある証明書は起動時に⾃動的に⽣成されるため、何らかの変更を⾏っても起動時に上書きされてしまいま す。代わりに次のステップで、新しい証明書の場所を指すように、関連する設定ファイルを編集します。 鍵と証明書ファイルを使⽤するための Splunk Web の設定 注意: Splunk Web は秘密鍵のパスワードをサポートしていません。Splunk Web の保護に鍵を使⽤する前に、 鍵からパスワードを削除する必要があります。 1. $SPLUNK_HOME/etc/system/local/web.conf (デプロイサーバーを使⽤している場合は、他の適切な場所) で、[settings] スタンザに以下の変更を⾏います。 編集した設定スタンザの例を以下に⽰します。 [settings] enableSplunkWebSSL = true privKeyPath = etc/auth/splunkweb/mySplunkWebPrivateKey.key caCertPath = etc/auth/splunkweb/mySplunkWebCertificate.pem 2. Splunk Web を再起動します。 # $SPLUNK_HOME/bin/splunk restart splunkweb caCertPath 属性に関する重要な注意事項 属性を使って新しいデフォルト証明書を指定する場合、指定する証明書ファイルが以下の条件を満たし ていることを確認してください。 caCertPath 最低 1 つのサーバー SSL 証明書と 1 つの認証局 (CA) 証明書が含まれている。 複数の証明書が適切な順番で格納されている。 サーバーの SSL 証明書。 必要な場合は、中間証明書。 必要な場合は、ルート証明書。 最良の結果を得るために、証明書ファイルへの絶対パスを使⽤している。相対パスも使⽤できますが、それ らのパスは $SPLUNK_HOME と相対的なもので、この設定を変更することはできません。 CA 証明書しかない場合、SSL が安全な接続を確⽴できないため、caCertPath 属性に CA 証明書のみを含むファイ ルを指定することはできません。CA 証明書しかない証明書ファイルを指定すると、HTTPS を使った Splunk Web は機能しません。 caCertPath 属性の設定⽅法の詳細は、『管理マニュアル』の web.conf に関する説明を参照してください。 設定の検証 正しく設定を⾏えば、ブラウザを使って証明書を表⽰できるようになります。また、web_service.log ($SPLUNK_HOME/var/log/splunk 内) に接続が成功したことを知らせるメッセージが記録されます。 正常に接続できない場合は、「Splunk Web 認証のトラブルシューティング」を参照してください。 Splunk Web 認証のトラブルシューティング 証明書設定を検証できない場合は、$SPLUNK_HOME/var/log/splunk 内の したエラーを確認してください。 web_service.log を参照して、再起動時に発⽣ SSL 設定の警告を探してください。たとえば、caCertPath に誤ったサーバー証明書へのパスを指定した場合、 Splunk Web を開始できず、以下のエラーメッセージが表⽰されます。 2010-12-21 16:25:02,804 ERROR [4d11455df3182e6710] root:442 - [Errno 2] No such file or directory: '/opt/splunk/share/splunk/mycerts/mySplunkWebCertificate.pem' 注意: privKeyPath にある秘密鍵がパスワードで保護されている場合、エラーは発⽣しませんが、ブラウザに Splunk Web は表⽰されません。 パスワードの削除については、「Splunk Web ⽤の⾃⼰署名証明書」または「Splunk Web ⽤のサードパーティ が署名した証明書の⼊⼿」を参照してください。 SSL による Splunk フォワーダーからインデクサー への通信の保護 52 フォワーダーからのデータの保護について フォワーダー は、インデクサー に raw データを送信します。このデータには、不正な参照や破壊などの⾏為に対 して脆弱性があります。データが閉鎖ネットワークや共存ネットワーク外に転送される場合、またはデータの機密 性が⾼い場合は、SSL 証明書を使ってデータを保護する必要があります。 デフォルトの証明書を使って⼀般的な不正参照者を防⽌することはできますが、Splunk に同梱されているルート 証明書はすべて同じルート証明書で、同じルート証明書を持つユーザーは認証できてしまうため、そのままでは脆 弱性が存在しています。デフォルトの証明書は、起動時に⽣成/設定され、$SPLUNK_HOME/etc/auth/ に保管されま す。 重要: デフォルトの証明書を使⽤する場合、⽣成後 3 年で失効するように設定されており、失効後はこのマニュ アルに記載されている説明に従って、新しく証明書を作成、設定する必要があることに注意してください。 デフォルトの証明書での SSL の設定については、「デフォルトの証明書を使⽤する Splunk 転送の設定」を参照 してください。 トラフィックやインデクサーへの送信データを簡単にのぞき⾒ることができないように、新たに⾃⼰署名証明書を ⽤意するか、またはサードパーティ認証局から証明書を購⼊して、それを使⽤することをお勧めします。フォワー ダーやインデクサーが証明書を使⽤するための設定⽅法については、「独⾃の証明書を使⽤するための Splunk 転 送の設定」を参照してください。 ⾃⼰署名証明書または CA の署名証明書を使って、フォワーダーからインデクサーへ転送されるデータのセキュ リティを強化するには、さまざまな⽅法が存在しています。 デフォルトの証明書を、独⾃のルート CA により署名された証明書に変更することができます。 Splunk に同梱されているデフォルトの証明書を、⾃分で⽣成、署名した証明書に置換します。証明書の⽣ 成と⾃⼰署名については、「証明書の⾃⼰署名⽅法」を参照してください。 デフォルトの証明書を、信頼できる認証局により署名された証明書に変更することができます。 「サードパーティが署名した証明書の⼊⼿⽅法」を参照してください。 共通名チェックを設定することで、さらにセキュリティを強化することができます。 共通名チェックにより、新たなセキュリティレイヤーが追加され、各インデクサーの証明書に指定されてい る共通名が、フォワーダーの設定ファイルに指定されている共通名と⼀致していなければ通信が許可されま せん。また、個別の共通名を持つ複数の証明書を設定して、それらをインデクサーに配布することもできま す。共通名チェック機能は、証明書の設定時に有効にします。詳細は、「独⾃の証明書を使った Splunk 転 送の設定」を参照してください。 デフォルトの証明書を使⽤する Splunk 転送の設定 Splunk に同梱されているデフォルトの証明書は、すべて同じルート証明書です。つまり、Splunk をダウンロー ドした任意のユーザーは、同じルート証明書により署名されたサーバー証明書を持っているため、他の同じ証明書 を使⽤しているシステムの認証を受けることが可能です。悪意のある第三者がトラフィックを⼿軽に参照したり、 あなたのインデクサーに不正にデータを送信することがないように、デフォルトの証明書を署名証明書に変更する ことをお勧めします。 重要: デフォルトの証明書は⽣成後 3 年で失効するように設定されており、失効後はこのマニュアルに記載され ている説明に従って、新しく証明書を作成、設定する必要があることに注意してください。 フォワーダーが、独⾃のルート CA またはサードパーティ CA が署名した証明書を使⽤するように設定する⽅法 については、「独⾃の証明書を使⽤するための Splunk 転送の設定」を参照してください。 このトピックでは、以下の事項について説明していきます。 Splunk に同梱されているデフォルトの証明書を使⽤するためのインデクサーの設定。 Splunk に同梱されているデフォルトの証明書を使⽤するためのフォワーダーの設定。 注意: 複数のフォワーダーを設定する場合は、各フォワーダーがデフォルトの証明書を個別に使⽤するように設 定してください。 デフォルトのサーバー証明書を使⽤するためのインデクサーの設定 1.$SPLUNK_HOME/etc/system/local/inputs.conf (または転送の設定を配布するために使⽤している任意の App の適切 なディレクトリ内のファイル) に、以下のスタンザを設定します。 この例では、フォワーダーからのデータの受信にポート 9997 を使⽤しています。 [SSL] rootCA = $SPLUNK_HOME/etc/auth/cacert.pem serverCert = $SPLUNK_HOME/etc/auth/server.pem password = password [splunktcp-ssl:9997] disabled=0 ここで、rootCA は CA の公開鍵へのパス、serverCert はデフォルトのサーバー証明書へのパスになります。 デフォルトの証明書は、$SPLUNK_HOME/etc/auth/server.pem にあります。 注意: デフォルトの証明書を使⽤する場合、デフォルトサーバー証明書の妥当性をチェックする必要がないた 53 め、requireClientCert = true を設定する必要はありません。 2.splunkd を再起動します。 $SPLUNK_HOME/bin/splunk restart splunkd フォワーダーの設定 フォワーダーがインデクサーと同じデフォルトの証明書を使⽤し、設定されている待機ポートにデータを送信する ように設定します。 この例では、インデクサーの IP アドレスに 10.1.12.112 を使⽤しています。 1.$SPLUNK_HOME/etc/system/local/outputs.conf (または転送の設定を配布するために使⽤している任意の App の適切 なディレクトリ内のファイル) に、以下のスタンザを定義します。 [tcpout] defaultGroup = splunkssl [tcpout:splunkssl] server = 10.1.12.112:9997 sslVerifyServerCert = false sslRootCAPath = $SPLUNK_HOME/etc/auth/cacert.pem sslCertPath = $SPLUNK_HOME/etc/auth/server.pem sslPassword = password ここで、rootCA は CA の公開鍵へのパス、serverCert はデフォルトのサーバー証明書へのパスになります。 を設定する必要はありません。デフォルトのサーバー証明書の妥当性を確認するよう に、フォワーダーに指⽰する必要はありません。 sslVerifyServerCert = true 2.splunkd を再起動します。 # $SPLUNK_HOME/bin/splunk restart splunkd 次のステップ 次に、設定が正常に機能していることを確認するために、接続をチェックする必要があります。詳細は、「設定の 検証」を参照してください。 独⾃の証明書を使⽤するための、Splunk 転送の設定 ここでは、独⾃の SSL 証明を使ってフォワーダーからインデクサーにデータを送信するように、Splunk を設定 する⽅法について説明していきます。フォワーダーからのデータ保護に証明書を使⽤することで、ネットワーク上 のデータ伝送時にデータが安全に暗号化されることが保証されます。ここでは、以下の作業⼿順について説明して います。 新しい署名証明書を使⽤するためのインデクサーの設定。 新しい署名証明書を使⽤するためのフォワーダーの設定。 作業を開始する前に、証明書を事前に⽤意しておく必要があります。証明書は x509 フォーマットの PEM ファイ ル、鍵は RSA フォーマットであることを確認してください。何かお⼿伝いが必要な⽅のために、独⾃の証明書を 作成、準備するための簡単な例がいくつか⽤意されています。詳細は、「独⾃の証明書を使った Splunk 転送の設 定」および「Splunk 間通信の保護について」を参照してください。 また、異なる共通名を持つ複数の証明書 (同じ認証局が署名) を作成し、それをインデクサーに配布してセキュリ ティを強化することも可能です。 証明書を使⽤するためのインデクサーの設定 1.サーバー証明書と CA 公開証明書を、対象インデクサー上のアクセス可能なフォルダにコピーします。 この例では、証明書 スに保管します。 myNewServerCertificate.pem および myCACertificate.pem を使⽤して、これらの証明書を以下のパ $SPLUNK_HOME/etc/auth/mycerts/ 警告: App ディレクトリ内の inputs.conf または outputs.conf に設定した場合、パスワードが暗号化されず、平 ⽂のままファイルに保管されます。そのため、App ディレクトリ内に SSL 設定を⾏う場合に使⽤する別の証明書 (同じルート CA が署名) を作成することができます。 2.インデクサーの inputs.conf を編集して、新しいサーバー証明書を使⽤するように設定しま す。$SPLUNK_HOME/etc/system/local/inputs.conf (または転送の設定を配布するために使⽤している任意の App の適 切なディレクトリ内のファイル) に、[SSL] スタンザを設定します。 この例では、フォワーダーからのデータ受信にポート 9997 (デフォルト) を使⽤しています。 [SSL] rootCA = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pem serverCert = $SPLUNK_HOME/etc/auth/mycerts/myNewServerCertificate.pem 54 password = <server certificate private key password> cipherSuite = <your chosen cipher suite (optional)> [splunktcp-ssl:9997] compressed = true 内のファイルを編集すると、Splunk の再起動時にパスワードが暗号化さ れて平⽂サーバー証明書パスワードに上書きされます。 $SPLUNK_HOME/etc/system/local/inputs.conf 3.splunkd を再起動します。 # $SPLUNK_HOME/bin/splunk restart splunkd 証明書を使⽤するためのフォワーダーの設定 1.サーバー証明書 (既存のサーバー証明書、またはこのフォワーダー⽤に特別に作成した新たな証明書をコピーで きます。この例では、myNewServerCertificate.pem を使⽤します) および 認証局公開証明書 myCACertificate.pem を、 設定する予定のフォワーダー上のアクセス可能なフォルダにコピーします。この例で は、$SPLUNK_HOME/etc/auth/mycerts/ に保管します。 警告: App ディレクトリ内の inputs.conf または outputs.conf に設定した場合、パスワードが暗号化されず、平 ⽂のままファイルに保管されます。そのため、App ディレクトリ内に SSL 設定を⾏う場合に使⽤する別の証明書 (同じルート CA が署名) を作成することができます。 2.$SPLUNK_HOME/etc/system/local/outputs.conf (または転送の設定を配布するために使⽤している任意の App の適切 なディレクトリ内のファイル) に、[SSL] スタンザを定義します。 [tcpout] defaultGroup = splunkssl [tcpout:splunkssl] server = 10.1.12.112:9997 compressed = true sslRootCAPath = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pem sslCertPath = $SPLUNK_HOME/etc/auth/mycerts/myNewServerCertificate.pem sslPassword = default sslVerifyServerCert = true ファイルを $SPLUNK_HOME/etc/system/local/outputs.conf に保存する際に、splunkd の再起動時に指定したサーバー 証明書のパスワードが Splunk により暗号化されて平⽂パスワードに上書きされます。 3.splunkd を再起動します。 # $SPLUNK_HOME/bin/splunk restart splunkd その他の設定オプション データを複数のインデクサーに転送するには フォワーダーが複数のインデクサーを認証するように設定するには、ターゲットグループを定義しているスタンザ の server パラメータに、「ホスト:ポート」アドレスをカンマ区切りリストで追加します。 以下の例では、インデクサーとフォワーダーで同じ証明書を使⽤しています。 [tcpout] defaultGroup = splunkssl [tcpout:splunkssl] server = 10.1.12.112:9997,10.1.12.111:9999 compressed = true sslRootCAPath = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pem sslCertPath = $SPLUNK_HOME/etc/certs/auth/mycerts/myNewServerCertificate.pem sslPassword = <your server private key password> sslVerifyServerCert = true 以下の例では、次の証明書を使⽤しています: myForwarderCertificate.pem [tcpout] defaultGroup = splunkssl [tcpout:splunkssl] server = 10.1.12.112:9997,10.1.12.111:9999 compressed = true sslRootCAPath = $SPLUNK_HOME/etc/auth/mycerts/myCACertificate.pem sslCertPath = $SPLUNK_HOME/etc/auth/mycerts/myForwarderCertificate.pem sslPassword = <your server certificate private key password> sslVerifyServerCert = true 55 異なる共通名を持つ証明書を使って複数のインデクサーにデータを転送するには 各インデクサーに対して個別のサーバー証明書を作成し、フォワーダーの outputs.conf にそれぞれのインデク サーに対応する [SSLConfig] スタンザを定義することができます。 インデクサー当たり 1 つのサーバー証明書を作成して、各インデクサーの証明書にフォワーダーがチェックする ⼀意の共通名 (CN) を設定した場合、outputs.conf にインデクサー当たり 1 つの [tcpout-server://HOST:PORT] スタ ンザを設定する必要があります。これにより、どのインデクサーに対してどの共通名をチェックするのかを指定で きます。 以下の例では、フォワーダーがインデクサー 10.1.12.112 が「CN="phobos"」のサーバー証明書を、インデク サー 10.1.12.113 が「CN="deimos"」のサーバー証明書を持つことをチェックします。いずれかの条件が⼀致し ない場合、フォワーダーは当該インデクサーへのデータの送信を拒否します。 [tcpout] defaultGroup = splunkssl [tcpout:splunkssl] server = 10.1.12.112:9997 compressed = true [tcpout-server://10.1.12.112:9997] sslRootCAPath = $SPLUNK_HOME/etc/certs/myCACertificate.pem sslCertPath = $SPLUNK_HOME/etc/certs/myNewServerCertificate.pem sslPassword = <your server private key password> sslVerifyServerCert = true sslCommonNameToCheck = phobos [tcpout-server://10.1.12.113:9997] sslRootCAPath = $SPLUNK_HOME/etc/certs/myCACertificate.pem sslCertPath = $SPLUNK_HOME/etc/certs/myNewServerCertificate.pem sslPassword = <your server private key password> sslVerifyServerCert = true sslCommonNameToCheck = deimos こうすることにより、同じ CA により署名された証明書を提⽰し、その証明書が予期されている名前 (CN) により 発⾏されていることを確認できたインデクサーにのみ、フォワーダーはデータを転送します。Splunk は、設定 ファイル内の名前 (sslCommonNameToCheck) とインデクサーの証明書に署名されている共通名の照合を⾏いま す。 次のステップ 次に、設定が正常に機能していることを確認するために、接続をチェックする必要があります。詳細は、「設定の 検証」を参照してください。 設定の検証 設定をデプロイする前に、splunkd.log を使って設定の検証とトラブルシューティングを⾏うことができます。 Splunkd.log は、インデクサーとフォワーダーの $SPLUNK_HOME/var/log/splunkd.log に存在しています。 インデクサーの場合は、スタートアップシーケンス内の以下のようなメッセージをチェックして、接続が正常に⾏ われているかどうかを確認します。 02-06-2011 19:19:01.552 INFO TcpInputProc - using queueSize 1000 02-06-2011 19:19:01.552 INFO TcpInputProc - SSL cipherSuite=ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM 02-06-2011 19:19:01.552 INFO TcpInputProc - supporting SSL v2/v3 02-06-2011 19:19:01.555 INFO TcpInputProc - port 9997 is reserved for splunk 2 splunk (SSL) 02-06-2011 19:19:01.555 INFO TcpInputProc - Port 9997 is compressed 02-06-2011 19:19:01.556 INFO TcpInputProc - Registering metrics callback for: tcpin_connections フォワーダーの場合は、スタートアップシーケンス内の以下のようなメッセージをチェックして、接続が正常に⾏ われているかどうかを確認します。 02-06-2011 19:06:10.844 INFO TcpOutputProc - Retrieving configuration from properties 02-06-2011 19:06:10.848 INFO TcpOutputProc - found Whitelist forwardedindex.0.whitelist , RE : forwardedindex.0.whitelist 02-06-2011 19:06:10.848 INFO TcpOutputProc - found Whitelist forwardedindex.1.blacklist , RE : forwardedindex.1.blacklist 02-06-2011 19:06:10.848 INFO TcpOutputProc - found Whitelist forwardedindex.2.whitelist , RE : forwardedindex.2.whitelist 02-06-2011 19:06:10.850 INFO TcpOutputProc - Will retry at max backoff sleep forever 02-06-2011 19:06:10.850 INFO TcpOutputProc - Using SSL for server 10.1.12.112:9997, sslCertPath=/opt/splunk/etc/aut/server.pem 56 02-06-2011 19:06:10.854 INFO TcpOutputProc - ALL Connections will use SSL with sslCipher= 02-06-2011 19:06:10.859 INFO TcpOutputProc - initializing single connection with retry strategy for 10.1.12.112:9997 設定上の問題のトラブルシューティングについては、このマニュアルの「フォワーダー/インデクサー設定のトラ ブルシューティング」を参照してください。 フォワーダー/インデクサー認証のトラブルシューティング 1.$SPLUNK_HOME/var/log/splunk/splunkd.log (インデクサーとフォワーダーの両⽅) に、エラーが記録されていないか どうかを確認します。インデクサー上で、TCP ⼊⼒プロセッサ TcpInputProc からのメッセージをチェックしま す。フォワーダー上で、TCP 出⼒プロセッサ TcpOutputProc からのメッセージをチェックします。 2.インデクサー/フォワーダー上の す。 フォワーダー上で $SPLUNK_HOME/etc/log.cfg category.TcpOutputProc=DEBUG にある、適切なプロセッサのログレベルを増やしま を、インデクサー上で category.TcpInputProc=DEBUG を設定します。 3.変更内容を反映するために Splunk を再起動してから、関連コンポーネントのスタートアップシーケンスを調査 します。この⽅法で、⼤部分の設定上の問題を発⾒することができます。 4.btool を使って SSL 設定をチェックします。 インデクサーの場合: $SPLUNK_HOME/bin/splunk cmd btool inputs list --debug フォワーダーの場合: $SPLUNK_HOME/bin/splunk cmd btool outputs list --debug ⼀般的な問題 inputs.conf の serverCert に設定されている、サーバー証明書ファイルセットへのパスが誤っている、また はファイルを読み取れない。この場合、以下のようなエラーが⽣成されます。 12-16-2010 16:07:30.965 ERROR SSLCommon - Can't read certificate file /opt/splunk/etc/auth/server.pem errno=33558530 error:02001002:system library:fopen:No such file or directory サーバー証明書ファイルに含まれている、RSA 秘密鍵のパスワードが誤っている。 12-07-2010 07:56:45.663 ERROR SSLCommon - Can't read key file /opt/splunk/etc/auth/server.pem *nix の場合、ファイルに含まれている RSA 鍵のパスワードを、以下のコマンドを使って⼿動でテストすることが できます。 # openssl rsa -in /opt/splunk/etc/auth/server.pem -text Windows の場合は、以下のコマンドを使って RSA 鍵のパスワードをテストすることができます。 >openssl.exe rsa -in "c:\Program Files\Splunk\etc\auth\server.pem" -text SSL を使った Splunk 間通信の保護 Splunk 間通信の保護について この章で、「Splunk 間通信」とは、管理ポート経由で⾏われる通信の暗号化と認証のことを表しています。これ には、以下のような事項が含まれています。 分散サーチ :サーチヘッドとピア間の通信。 デプロイサーバー :デプロイサーバーとクライアント間の通信。 クラスタ設定 :指定されたインデクサー間でのデータ/設定情報のレプリケーション。 Splunk Web :Splunk Web と splunkd 間の通信の保護。 注意: この章では、管理ポート経由の通信への SSL の使⽤⽅法のみを説明しています。ブラウザと Splunk Web 間の通信への SSL の使⽤については、「Splunk Web の保護について」を参照してください。フォワーダーとレ シーバー間の通信への SSL の使⽤については、「フォワーダーからのデータの保護について」を参照してくださ い。 SSL を使った Splunk 間通信の保護⽅法 ここでは、Splunk 間通信への SSL セキュリティの導⼊⽅法について説明していきます。 Splunk が提供しているデフォルトの証明書を使って、SSL を使⽤することができます。 この設定は⼿軽に利⽤でき、暗号化と圧縮を提供しています。⼤部分の環境において、推奨する⽅法がこれ です。また、デフォルトで有効になっています。SSL が無効になっている場合、または何らかの理由でご利 ⽤のシステムに証明書がない場合は、このマニュアルに記載されている⼿順で暗号化を有効にして、Splunk 57 に証明書を使⽤するように指⽰することができます。「デフォルトの証明書を使った Splunk 間通信につい て」を参照してください。 保護されている認証の場合、Splunk が提供するデフォルトの証明書を、独⾃の CA で署名した証明書また は信頼されている認証局から購⼊した証明書に変更することができます。⼤部分の Splunk 環境でこれはお 勧めできない⽅法で、通常は必要ありません。これは⾼度な設定で、複雑な SSL 設定の知識がある管理者の みが作業を⾏ってください。詳細は、以下のトピックを参照してください。 Splunk Web と splunkd 間の通信の保護 分散サーチヘッドとピアの保護 デプロイサーバーとクライアントの保護 クラスタの保護について Splunk Web と splunkd 間の通信の保護 Splunk Web から splunkd への通信は、サーチ要求、結果データ、および REST API 呼び出しから成り⽴ってい ます。 デフォルトの証明書を使った SSL 暗号化は最初から有効になっています。たいていの環境ではこれで⼗分です が、Splunk Web と splunkd インスタンスがファイアウォール外のインスタンスと機密データを通信しているよ うな場合は、署名証明書を使⽤することもできます。また、server.conf の設定でクライアントの証明書が必要な 場合は、splunkd に証明書を提⽰するように Splunk Web を設定する必要があります。 証明書を使⽤するように Splunk Web から splunkd への通信を設定するには: 1. 1 つまたは複数の証明書を設定します。 2. server.conf を編集して、splunkd に 証明書を指⽰します。sslConfig スタンザの編集例を以下に⽰します。 [sslConfig] enableSplunkdSSL = true sslKeysfile = server.pem sslKeysfilePassword = password caCertFile = cacert.pem caPath = $SPLUNK_HOME/etc/auth cipherSuite = <your chosen cipher suite (optional)> 3. server.conf で、splunkd に接続するすべての HTTPS クライアントに Splunk 認証局が署名した証明書が必要な ことを⽰すために、requireClientCert=true 内に server.conf を設定します。 警告: requireClientCert を有効にすると、splunkd は通信を要求するすべてのクライアントに証明書の提⽰を要 求するため、CLI からは接続できません。 4. web.conf を編集して、splunkd が検証する証明書を指定します。 編集した設定スタンザの例を以下に⽰します。 [settings] enableSplunkWebSSL = true privKeyPath = etc/auth/splunkweb/mySplunkWebPrivateKey.key caCertPath = etc/auth/splunkweb/mySplunkWebCertificate.pem cipherSuite = <your chosen cipher suite (optional)> 秘密鍵へのパスワードに対応する属性はないことに注意してください。Splunk Web は秘密鍵のパスワードをサ ポートしていないため、鍵からパスワードを削除する必要があります。詳細は、「Splunk Web ⽤のサードパー ティが署名した証明書の⼊⼿」を参照してください。 分散サーチヘッドとピアの保護 分散サーチ 環境は、サーチ情報、ナレッジオブジェクト、App、および設定情報を、管理ポート経由で共有して います。 サーチヘッドとピア間の通信には、公開鍵暗号を使⽤しています。Splunk は起動時に、秘密鍵と公開鍵を⽣成し ます。サーチヘッドに分散サーチを設定した場合、公開鍵がピアに配布されて、それらの鍵が通信の保護に⽤いら れます。このデフォルト設定は、パフォーマンスを向上するビルトインの暗号/データ圧縮機能を提供していま す。 これらの⽣成された鍵を独⾃の鍵と交換することができます。ただし、そうすることはお勧めできません。また、 ⼀般的には不要です。分散サーチ⽤の公開鍵暗号を設定するには、鍵を作成してそれをサーチヘッドとピアに配布 します。サーチピアへの鍵ファイルの配布については、『分散サーチ』マニュアルの「鍵ファイルの配布」を参照 してください。 デプロイサーバーとクライアントの保護 デプロイサーバーとクライアント間の通信には、管理ポート経由の設定情報が関与しています。これらのコンポー ネントがサーチデータを転送することはありません。 管理ポート経由で通信されるデータに対しては、最低でも、最初から有効になっているデフォルトの証明書を使っ 58 たSSL 暗号化を使⽤することを強くお勧めします。Splunk のデフォルト SSL 設定は、パフォーマンスを向上す るビルトインの暗号/データ圧縮機能を提供しています。詳細は、「デフォルト値を使った Splunk 間通信につい て」を参照してください。 デプロイサーバーおよびクライアントの証明書認証を設定すると、構成の残りの部分に影響を与えることを理解し ておく必要があります。 Splunk Web も証明書を使⽤するように設定しないと、Splunk Web は認証に失敗してしまいます。 CLI はデプロイサーバーと通信できなくなります。 ただし、とても機密性が⾼いサーバー設定データなどが、ファイアウォール外のさまざまな場所に送信される環境 など、⼀部の分散環境ではこのような設定が必要になります。 以上のことを念頭に、Splunk 間通信に対する SSL の設定に関する、いくつかのガイドラインをここに記載しま す。 サーチヘッドとピア間の SSL 証明書を設定する場合、以下の⼿順を遵守する必要があります。 1. 同じルート CA を使って、1 つまたは複数の証明書を作成します。 2. デプロイサーバーとクライアントに証明書を配布します。 3. server.conf を編集して、証明書の場所を指定します。 [sslConfig] enableSplunkdSSL = true sslKeysfile = server.pem sslKeysfilePassword = password caCertFile = cacert.pem caPath = $SPLUNK_HOME/etc/auth cipherSuite = <your chosen cipher suite (optional)> 4. server.conf を編集して、証明書に対して認証を⾏うように設定します。 requireClientCert = [true|false] 重要: requireClientCert には、デフォルトでは「false」が設定されています。これを true に変更して、Splunk にクライアントの証明書のチェックを強制すると、Splunk Web と CLI も証明書がチェックされます。CLI 接続 ではクライアントとして証明書を提⽰できないため、CLI 接続は利⽤できなくなります。 5. Splunk Web がサーバーに接続できるように、web.conf を編集して、同じルート CA が署名した証明書を指定し ます。 編集した設定スタンザの例を以下に⽰します。 [settings] enableSplunkWebSSL = true privKeyPath = etc/auth/splunkweb/mySplunkWebPrivateKey.key caCertPath = etc/auth/splunkweb/mySplunkWebCertificate.pem cipherSuite = <your chosen cipher suite (optional)> 注意: Splunk Web は秘密鍵のパスワードをサポートしていないため、秘密鍵からパスワードを削除する必要が あります。詳細は、「Splunk Web ⽤のサードパーティが署名した証明書の⼊⼿」を参照してください。 クラスタの保護について Splunk には、クラスタリングノードが相互に認証できるように、「共有シークレット」機能が⽤意されていま す。クラスタを設定する際に、共有シークレットを決定します。各ノードには同じシークレットを割り当てます。 最適なパフォーマンスを得るために、Splunk 間データ通信にはデフォルトの SSL 暗号を使⽤して (デフォルトで 有効です)、Splunk に⽤意されている共有シークレット機能を活⽤することをお勧めします。 Splunk Web を使った共有シークレットの設定に関する詳細は、「マスターノードを有効にする」を参照してく ださい。 CLI での共有シークレット使⽤の詳細は、『インデクサーとクラスタの管理』の「server.conf によるクラスタの 設定」を参照してください。 デフォルト値を使った Splunk 間通信について 最初に Splunk サーバーを有効にした時に、サーバーはそのインスタンスの証明書を⽣成します。デフォルトで証 明書は $SPLUNK_HOME/etc/auth/ ディレクトリに保管されます。 署名証明書を使⽤する場合は、専⽤の新しいディレクトリを作成して、新しい証明書を使⽤するように、 server.conf にパスを指定します。再びデフォルトの証明書を使⽤するようにシステムを設定するには、単純に⾃ 動⽣成される証明書を使⽤するように、server.conf ファイルをデフォルト設定に変更します。 Splunk が⽣成した証明書を使⽤する、デフォルトの server.conf 59 設定を以下に⽰します。 [sslConfig] enableSplunkdSSL = true sslKeysfile = server.pem sslKeysfilePassword = password caCertFile = cacert.pem caPath = $SPLUNK_HOME/etc/auth Splunk Enterprise アクティビティの監査 Splunk を使ったシステムアクティビティの監査 システムを安全に保護するために、システムで何が⾏われているのかを知ることが必要不可⽋です。 システムを最⼤限活⽤し安全に保つため、次のベストプラクティスに沿うことをお勧めします。 Splunk のアクセスログや監査ログを定期的にレビューしてください。 Splunk サーバーの監査ログやセキュリティログを定期的にレビューしてください。 すべての Splunk ユーザーとロールを定期的にレビューしてください。 Splunk アクティビティの監査 監査イベントには何がある? タイムスタンプ: イベントの⽇時。 ユーザー情報: イベントを⽣成したユーザー。 イベントにユーザー情報が含まれていない場合、Splunk は現在ログインしているユーザーを設定しま す。 その他の情報: 利⽤可能なイベント情報 -- ファイル、成功/拒否など。 監査イベントを⽣成するアクティビティ 監査イベントはモニターから⽣成されます。 Splunk の次の設定ディレクトリ内のすべてのファイル: $SPLUNK_HOME/etc/* ファイルシステム変更モニターを使って、ファイルの追加/変更/削除がモニターされます。 システムの開始/停⽌。 ユーザーのログイン/ログアウト。 新規ユーザーの追加/削除。 ユーザー情報の変更 (パスワード、ロールなど)。 システム内の任意の権限の実⾏。 権限は authorize.conf に記載されています。 監査イベントストレージ Splunk は、監査イベントをローカルの監査インデックス (index=_audit) に保管します。監査イベントは、次のロ グファイルに記録されます: $SPLUNK_HOME/var/log/splunk/audit.log。 Splunk を分散環境のフォワーダーとして設定した場合、監査イベントは他のイベントと同様に転送されます。署 名は、フォワーダー上、または受信 Splunk インスタンス上で⾏われます。 監査イベントのサーチ 監査イベントは、Splunk Web または Splunk の CLI でサーチします。サーチでパイプ⽂字を使⽤しながら audit コマンドを指定していきます。audit コマンドは、監査イベント署名が設定されている場合に特に役⽴ちま す。ただし、監査イベント署名が設定されていない (または整合性検証をスキップする) 環境ですべての監査イベ ントをサーチしたい場合は、監査インデックス全体をサーチすることができます。 すべての監査イベントをサーチするには、_audit インデックスを指定します。 index=_audit すべての監査イベントを返します。 サーチを audit コマンドにパイプします。 index=_audit | audit 監査インデックス全体を返し、⾒つかった監査イベントを audit コマンド経由で処理します。 audit コマンドにパイプする前に、サーチで返される項⽬数を絞り込んでください。ただし、時間範囲または単⼀ のホストでのみ絞り込むことができます。これは、各ホストが固有の ID 番号シーケンスを保有しているためで す。連番は監査イベントのギャップを検出するために存在しているので、複数のホストにサーチを絞り込むと偽の ギャップが検出される可能性があります。 60 イベントのステータスが含まれているフィールドは、「妥当性」と呼ばれています。以下の値が設定されます。 VALIDATED - このイベントの前にギャップが存在しておらず、イベント署名が⼀致している TAMPERED - イベントの署名が⼀致しない NO SIGNATURE - 署名が⾒つからない ギャップステータスが含まれているフィールドは、「ギャップ」 (gap) と呼ばれています。以下の値が設定され ます。 TRUE - ギャップが⾒つかった FALSE - ギャップは⾒つからなかった N/A - ID が⾒つからない データ統合性の管理 Splunk Enterprise のデータ統合性制御機能を使えば、インデックスされているデータの統合性を検証することが できます。 インデックスのデータ統合性制御を⾏う場合、Splunk Enterprise はデータの⼀つ⼀つにハッシュ値を計算し、保 存します。これにより、後でまた戻ってきてデータの統合性を検証可能です。 仕組み データの統合性管理を⾏う場合、Splunk Enterprise は新しくインデックスされた未加⼯のデータの⼀つ⼀つに ハッシュ値を計算し、l1Hashes ファイルに書き込みます。バケツがホットからウォームに移⾏する場合、Splunk Enterprise は l1Hashes のコンテンツのハッシュ値を計算し、l2Hash に保存します。ハッシュファイルはどちらも バケツ⽤の rawdata ディレクトリに保存されます。 新しくデータにインデックスされたデータ統合性制御ハッシュ、フォワーダーからのデータは SSL で安全に暗号 化されていることに留意してください。詳細は、「SSL による Splunk の保護について」を参照してください。 データを検証するためのハッシュ値の確認 Splunk Enterprise データを確認するために、次の CLI コマンドを実⾏してインデックスまたはバケツの統合性 を検証します。 ./splunk check-integrity -bucketPath [ bucket path ] [ verbose ] ./splunk check-integrity -index [ index name ] [ verbose ] データ統合性制御の設定 データ統合性の制御を設定するために、indexes.conf を編集して enableDataIntegrityControl 属性を各インデックス に有効化します。すべてのインデックスのデフォルト値は false (オフ) です。 enableDataIntegrityControl=true クラスタ環境のデータ統合性 クラスタ環境では、クラスタマスターとピアすべてが Splunk Enterprise 6.3 を実⾏でき、正確なインデックスレ プリケーションを有効にする必要があります。データ統合性設定のバンドルをクラスタマスターからピアにプッ シュします。 クラスタ環境の管理設定に関する詳細は、『分散デプロイ』マニュアルを参照してください。 データスライスのサイズ変更 (オプション) デフォルトでは、データスライスは 128kb に設定されています。これは、データスライスが 128KB毎に作成・ ハッシュされることを意味しています。オプションとして indexes.conf を編集し、各スライスのサイズを指定する ことができます。 rawChunkSizeBytes = 131072 データハッシュの保存と保護 最適なセキュリティのため、データがホストされるシステムの外 (別のサーバー等) にハッシュを任意で保存する ことが可能です。名前の重複を避けるため、保護ハッシュは別々のディレクトリに保存します。 ハッシュの再⽣成 バケツのハッシュをなくしてしまった場合、次の CLI コマンドを使⽤して、バケツまたはインデックスでハッ シュファイルを再⽣成します。このコマンドはジャーナルに埋め込まれたハッシュを抽出します。 ./splunk generate-hash-files -bucketPath [ bucket path ] [ verbose ] 61 ./splunk generate-hash-files -bucketPath [ bucket path ] [ verbose ] ./splunk generate-hash-files -index [ index name ] [ verbose ] Splunk Enterprise のパスワードとアクセスのセ キュリティ 複数のサーバーへの保護パスワードのデプロイ 初期起動時に Splunk は $SPLUNK_HOME/etc/auth/splunk.secret ファイルを作成します。このファイルには、設定ファ イル内の⼀部の認証情報を暗号化するために使⽤される鍵が含まれています。 web.conf:各インスタンスの SSL パスワード。 LDAP パスワード (ある場合)。 inputs.conf: SSL パスワード (splunktcp-ssl を使⽤している場合)。 outputs.conf:: SSL パスワード (splunktcp-ssl を使⽤している場合)。 authentication.conf: Splunk 開始時に、これらの設定の⼀つに平⽂パスワードが検出された場合、同等のローカルフォルダ内の設定 が、暗号化パスワードで作成、または上書きされます。 Splunk を複数のサーバーにデプロイする場合は、以下の⼿順に従ってこれらのパスワードを暗号化して、それら がデプロイ環境全体で⼀貫していることを確認してください。この⼿順は初期デプロイ時に実⾏する必要がありま す。また、新しいパスワードをデプロイする場合にも実⾏する必要があります。 1. Splunk インスタンスを設定し、必要に応じてパスワードを変更します。(新しい設定の場合は、まだ他のインス タンスを開始しないでください) 2. ファイル内のパスワードを暗号化するために、設定したインスタンスを再起動します。再起動で暗号化しない限 り、パスワード情報は平⽂のまま保管されます。 3. 設定したインスタンスから、他のすべてのインスタンスに、暗号化された す。 splunk.secret ファイルをコピーしま 4. ファイルをコピーしたすべてのインスタンスを起動します。デプロイ完了後に、変更したファイルを配布した場 合は、既存のインスタンスを再起動します。 注意: この⼿順はサーチヘッドクラスタには関連していません。サーチヘッドクラスタで、クラスタの初期デプ ロイ中、キャプテンは他のクラスタメンバーすべてに splunk.secret ファイルを複製するため、⼿動で複製を⾏う 必要はありません。通常の運⽤の中で、クラスタは個⼈⽤ App によって保存された資格情報を⾃動的に複製しま す。 サービスアカウントの保護 Splunk を権限がある root や管理者などのユーザーではなく、権限がないユーザーとして操作して、最低権限割 り当ての原則を調査してください。 UNIX または Linux の場合、PKG または RPM パッケージで作成される「splunk」ユーザーを使⽤する か、または $SPLUNK_HOME に対する権限と所有権のみを保持する独⾃のユーザーを作成、使⽤してくださ い。 Windows の場合は、ローカルシステムコンテキストが適しています。ただし、WMI などの Windows の通 信チャネルを使って通信する必要がある場合には、制限されたアクセスアカウントを使⽤してください。 Splunk Enterprise のアクセス制御リストの使⽤ Splunk Enterprise 設定を保護するために、Splunk アクセス制御リスト (ACL) を使って、ネットワークの各部 にアクセスできる IP アドレスを制限してください。 アクセス制御リストを設定するには、server.conf および ドレスを指定します。 inputs.conf を編集して、各種通信で許可/拒否する IP ア ACL の設定⽅法 複数のアドレスを指定する場合は、カンマまたはスペースで区切ります。アドレスは以下の形式で指定できます。 単⼀の IPv4 または IPv6 アドレス。例:10.1.2.3, fe80::4a3。 CIDR ブロックアドレス。例:10/8, fe80:1234/32。 DNS 名、通常は * をワイルドカードとして使⽤して次の例のように指定できます: *.splunk.com。 任意のアドレスに⼀致する、単⼀の * (これがデフォルト値です)。 myhost.example.com, ⽬的のアドレスを追加するには、以下のいずれかの形式でそのアドレスを追加します。アドレスを除外する場合 は、アドレスの先頭に「!」を指定します。 ルールは順番に適⽤され、最初に⼀致したルールが使⽤されます。たとえば、「!10.1/16, *」と指定すると、 10.1.*.* ネットワーク以外のすべてのネットワークからの接続が許可されます。 62 ACL の設定場所 [Accept from] の値を編集して、以下の接続の IP アドレスを保護することができます。 特定の IP を持つ他のノードからの複製データのみを受け付けるように設定するには、server.conf の httpServer スタンザを編集します。 この属性を設定する場合、クラスタ内の他のすべてのピアの IP アドレスを指定していることを確認する必 要があります。クラスタの詳細は、「クラスタとインデックスレプリケーションについて」を参照してくだ さい。server.conf の編集⽅法の詳細は、「server.conf」を参照してください。 TCP 接続を特定の IP アドレスのみに制限する場合は、inputs.conf の tcp スタンザを編集します。情報が競 合する場合、server.conf 内の出⼒値が上書きされるため、設定には注意が必要です。 SSL を使った TCP 接続を特定の IP アドレスに制限する場合は、inputs.conf の す。 tcp-ssl スタンザを編集しま インデクサーが特定の IP アドレスを持つフォワーダーからのみデータを受け付けるように制限するに は、inputs.conf の splunktcp スタンザを編集します。これにより、誰かがフォワーダーになりすましてデー タを破壊する危険性を防⽌できます。 フォワーダーからインデクサーへの通信を SSL で保護している場合は、inputs.conf の splunktcp-ssl スタン ザを編集して、インデクサーが特定の IP アドレスを持つフォワーダーからのみデータを受け付けるように 制限します。 UDP 接続を特定の IP アドレスのみに制限する場合は、inputs.conf の inputs.conf の編集⽅法の詳細は、「inputs.conf」を参照してください。 63 UDP スタンザを編集します。