開発者ドキュメント

Ubuntu20.04にGrafanaをインストールして保護する方法

著者はCOVID-19救済基金を選択し、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

Grafana は、 Prometheus InfluxDB Graphite ElasticSearch。 Grafanaを使用すると、データのアラート、通知、アドホックフィルターを作成できると同時に、組み込みの共有機能を通じてチームメートとのコラボレーションが容易になります。

このチュートリアルでは、Grafanaをインストールし、SSL証明書Nginxリバースプロキシで保護します。 Grafanaを設定すると、GitHubを介してユーザー認証を構成するオプションが表示され、チームの権限をより適切に整理できるようになります。

前提条件

このチュートリアルに従うには、次のものが必要です。

ステップ1—Grafanaのインストール

この最初のステップでは、GrafanaをUbuntu20.04サーバーにインストールします。 Grafanaをインストールするには、公式Webサイトから直接ダウンロードするか、APTリポジトリを使用します。 APTリポジトリを使用すると、Grafanaのアップデートのインストールと管理が簡単になるため、このチュートリアルではその方法を使用します。

GrafanaGPGキーwgetでダウンロードし、出力apt-keyにパイプします。 これにより、APTインストールの信頼できるキーのリストにキーが追加され、GPGで署名されたGrafanaパッケージをダウンロードして検証できるようになります。

  1. wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

このコマンドでは、オプション-qは、wgetのステータス更新メッセージをオフにし、-Oはダウンロードしたファイルを端末に出力します。 これらの2つのオプションにより、ダウンロードされたファイルのコンテンツのみがapt-keyにパイプライン処理されます。

次に、GrafanaリポジトリをAPTソースに追加します。

  1. sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

APTキャッシュを更新して、パッケージリストを更新します。

  1. sudo apt update

これで、インストールを続行できます。

  1. sudo apt install grafana

Grafanaをインストールしたら、systemctlを使用してGrafanaサーバーを起動します。

  1. sudo systemctl start grafana-server

次に、サービスのステータスを確認して、Grafanaが実行されていることを確認します。

  1. sudo systemctl status grafana-server

次のような出力が表示されます。

Output
● grafana-server.service - Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago Docs: http://docs.grafana.org Main PID: 15982 (grafana-server) Tasks: 7 (limit: 1137) ...

この出力には、ステータス、メインプロセス識別子(PID)など、Grafanaのプロセスに関する情報が含まれています。 active (running)は、プロセスが正しく実行されていることを示します。

最後に、サービスが起動時にGrafanaを自動的に開始できるようにします。

  1. sudo systemctl enable grafana-server

次の出力が表示されます。

Output
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable grafana-server Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

これは、systemdがGrafanaを自動起動するために必要なシンボリックリンクを作成したことを確認します。

これでGrafanaがインストールされ、使用できるようになりました。 次に、リバースプロキシとSSL証明書を使用してGrafanaへの接続を保護します。

ステップ2—リバースプロキシの設定

SSL証明書を使用すると、Grafanaとの間の接続を暗号化することで、データの安全性が確保されます。 ただし、この接続を利用するには、最初にNginxをGrafanaのリバースプロキシとして再構成する必要があります。

前提条件でLet’sEncryptを使用してNginxサーバーブロックを設定したときに作成したNginx構成ファイルを開きます。 任意のテキストエディタを使用できますが、このチュートリアルではnanoを使用します。

  1. sudo nano /etc/nginx/sites-available/your_domain

次のブロックを見つけます。

/ etc / nginx / sites-available / your_domain
...
	location / {
        try_files $uri $uri/ =404;
	}
...

SSLを介して通信するようにNginxを構成済みであり、サーバーへのすべてのWebトラフィックがすでにNginxを通過しているため、デフォルトでポート3000で実行されるGrafanaにすべてのリクエストを転送するようにNginxに指示する必要があります。

このlocation blockの既存のtry_files行を削除し、次のproxy_passオプションに置き換えます。

/ etc / nginx / sites-available / your_domain
...
	location / {
	  	proxy_pass http://localhost:3000;
	}
...

これにより、プロキシが適切なポートにマップされます。 完了したら、CTRL+XYnanoを使用している場合はENTERを押してファイルを保存して閉じます。

次に、新しい設定をテストして、すべてが正しく構成されていることを確認します。

  1. sudo nginx -t

次の出力が表示されます。

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

最後に、Nginxをリロードして変更をアクティブにします。

  1. sudo systemctl reload nginx

Webブラウザでhttps://your_domainを指定すると、デフォルトのGrafanaログイン画面にアクセスできるようになります。 Grafanaに到達できない場合は、ファイアウォールがポート443でのトラフィックを許可するように設定されていることを確認してから、前の手順を再度トレースしてください。

暗号化されたGrafanaへの接続により、Grafanaのデフォルトの管理者資格情報の変更から始めて、追加のセキュリティ対策を実装できるようになりました。

ステップ3—クレデンシャルを更新する

すべてのGrafanaインストールはデフォルトで同じ管理クレデンシャルを使用するため、ログイン情報をできるだけ早く変更することをお勧めします。 このステップでは、セキュリティを向上させるために資格情報を更新します。

Webブラウザからhttps://your_domainに移動することから始めます。 これにより、デフォルトのログイン画面が表示され、Grafanaのロゴが表示されます。このフォームには、メールまたはユーザー名パスワードログインの入力を求めるフォームが表示されます。 ]ボタン、パスワードをお忘れですか?リンク。

メールまたはユーザー名パスワードの両方のフィールドにadminと入力し、ログインボタンをクリックします。

次の画面で、デフォルトのパスワードを変更してアカウントをより安全にするように求められます。

新しいパスワードおよび新しいパスワードの確認フィールドに、使用を開始するパスワードを入力します。

ここから、送信をクリックして新しい情報を保存するか、スキップを押してこの手順をスキップできます。 スキップすると、次回ログイン時にパスワードを変更するように求められます。

Grafanaセットアップのセキュリティを強化するには、送信をクリックします。 Welcome toGrafanaダッシュボードに移動します。

これで、デフォルトのクレデンシャルを変更してアカウントを保護できました。 次に、Grafanaの構成を変更して、許可なく誰も新しいGrafanaアカウントを作成できないようにします。

ステップ4—Grafana登録と匿名アクセスを無効にする

Grafanaには、訪問者が登録せずに自分のユーザーアカウントを作成し、ダッシュボードをプレビューできるオプションが用意されています。 Grafanaにインターネット経由でアクセスできない場合、またはサービスステータスなどの公開されているデータを処理している場合は、これらの機能を許可することをお勧めします。 ただし、Grafanaをオンラインで使用して機密データを処理する場合、匿名アクセスはセキュリティ上の問題になる可能性があります。 この問題を修正するには、Grafanaの構成にいくつかの変更を加えます。

まず、Grafanaのメイン構成ファイルを開いて編集します。

  1. sudo nano /etc/grafana/grafana.ini

[users]見出しの下にある次のallow_sign_upディレクティブを見つけます。

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
;allow_sign_up = true
...

trueでこのディレクティブを有効にすると、ログイン画面に Sign Up ボタンが追加され、ユーザーは自分で登録してGrafanaにアクセスできるようになります。

falseでこのディレクティブを無効にすると、サインアップボタンが削除され、Grafanaのセキュリティとプライバシーが強化されます。

行の先頭にある;を削除し、オプションをfalseに設定して、このディレクティブのコメントを解除します。

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
allow_sign_up = false
...

次に、[auth.anonymous]見出しの下にある次のenabledディレクティブを見つけます。

/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

enabledtrueに設定すると、未登録のユーザーがダッシュボードにアクセスできるようになります。 このオプションをfalseに設定すると、ダッシュボードへのアクセスが登録ユーザーのみに制限されます。

行の先頭にある;を削除し、オプションをfalseに設定して、このディレクティブのコメントを解除します。

/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
enabled = false
...

ファイルを保存して、テキストエディタを終了します。

変更を有効にするには、Grafanaを再起動します。

  1. sudo systemctl restart grafana-server

Grafanaのサービスステータスを確認して、すべてが機能していることを確認します。

  1. sudo systemctl status grafana-server

以前と同様に、出力はGrafanaがactive (running)であることを報告します。

次に、Webブラウザでhttps://your_domainを指定します。 サインアップ画面に戻るには、画面左下のアバターにカーソルを合わせ、表示されるサインアウトオプションをクリックします。

サインアウトしたら、サインアップボタンがないこと、およびログイン資格情報を入力せずにサインインできないことを確認します。

この時点で、Grafanaは完全に構成され、使用できるようになっています。 次に、GitHubを介して認証することで、組織のログインプロセスを簡素化できます。

(オプション)ステップ5 —GitHubOAuthアプリのセットアップ

サインインの別の方法として、GitHubを介して認証するようにGrafanaを構成できます。これにより、承認されたGitHub組織のすべてのメンバーにログインアクセスが提供されます。 これは、Grafana固有のクレデンシャルを作成せずに、複数の開発者がコラボレーションしてメトリックにアクセスできるようにする場合に特に便利です。

組織に関連付けられているGitHubアカウントにログインしてから、https://github.com/settings/profileのGitHubプロファイルページに移動します。

画面の左側にある自分の名前をクリックし、ドロップダウンメニューで組織を選択して、設定コンテキストを切り替えます。 これにより、コンテキストが個人設定から組織設定に切り替わります。

次の画面に、組織プロファイルが表示されます。ここで、組織表示名、組織メール、組織URLなどの設定を変更できます。

GrafanaはOAuth(リモートのサードパーティにローカルリソースへのアクセスを許可するためのオープンスタンダード)を使用してGitHubを介してユーザーを認証するため、GitHub内に新しいOAuthアプリケーションを作成する必要があります。

画面左下の開発者設定の下にあるOAuthアプリリンクをクリックします。

GitHubで組織に関連付けられているOAuthアプリケーションをまだ持っていない場合は、組織所有のアプリケーションがないと通知されます。 それ以外の場合は、アカウントにすでに接続されているOAuthアプリケーションのリストが表示されます。

新しいOAuthアプリボタンをクリックして続行します。

次の画面で、Grafanaのインストールに関する次の詳細を入力します。

GitHubを介してログインするGrafanaユーザーには、前の3つのフィールドに入力した値が表示されることに注意してください。そのため、意味のある適切なものを入力してください。

完了すると、フォームは次のようになります。

緑色のアプリケーションの登録ボタンをクリックします。

これで、新しいOAuthアプリケーションに関連付けられたクライアントIDクライアントシークレットを含むページにリダイレクトされます。 セットアップを完了するには、両方の値をGrafanaのメイン構成ファイルに追加する必要があるため、両方の値をメモしてください。

警告: クライアントIDクライアントシークレットは、攻撃の基礎として使用される可能性があるため、安全で非公開の場所に保管してください。 。

GitHub OAuthアプリケーションが作成されたら、認証にGitHubを使用するようにGrafanaを再構成する準備が整いました。

(オプション)ステップ6 —GrafanaをGitHubOAuthアプリとして構成する

GrafanaセットアップのGitHub認証を完了するために、Grafana構成ファイルにいくつかの変更を加えます。

まず、メインのGrafana構成ファイルを開きます。

  1. sudo nano /etc/grafana/grafana.ini

[auth.github]の見出しを見つけ、;allowed_domains = ;team_ids =を除くすべての行の先頭にある;を削除して、このセクションのコメントを解除します。このチュートリアル。

次に、次の変更を行います。

完全な構成は次のようになります。

/etc/grafana/grafana.ini
...
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name
...

これで、GitHubについて知っておく必要のあるすべてのことをGrafanaに伝えました。 セットアップを完了するには、リバースプロキシの背後でリダイレクトを有効にする必要があります。 これは、[server]見出しの下にroot_url値を設定することによって行われます。

/etc/grafana/grafana.ini
...
[server]
root_url = https://your_domain
...

構成を保存してファイルを閉じます。

次に、Grafanaを再起動して、変更をアクティブにします。

  1. sudo systemctl restart grafana-server

最後に、サービスが稼働していることを確認します。

  1. sudo systemctl status grafana-server

出力は、サービスがactive (running)であることを示します。

次に、https://your_domainに移動して、新しい認証システムをテストします。 すでにGrafanaにログインしている場合は、画面の左下隅にあるアバターログにマウスを合わせ、名前の横に表示されるセカンダリメニューのサインアウトをクリックします。

ログインページでは、元のログインボタンの下に、GitHubロゴのあるGitHubでサインインボタンを含む新しいセクションが表示されます。

GitHubでサインインボタンをクリックすると、GitHubにリダイレクトされます。ここで、GitHubアカウントにサインインし、Grafanaを承認する意図を確認します。

緑色のAuthorizeyour_github_organizationボタンをクリックします。

注: GitHubアカウントが承認された組織のメンバーであり、GrafanaのメールアドレスがGitHubのメールアドレスと一致していることを確認してください。 承認された組織のメンバーではないGitHubアカウントで認証しようとすると、ログイン失敗メッセージが表示され、ユーザーは必要な組織のメンバーではありません[ X213X]。

これで、既存のGrafanaアカウントでログインできます。 ログインしたユーザーのGrafanaアカウントがまだ存在しない場合、Grafanaは Viewer 権限を持つ新しいユーザーアカウントを作成し、新しいユーザーが既存のダッシュボードのみを使用できるようにします。

新規ユーザーのデフォルトの権限を変更するには、編集用にメインのGrafana構成ファイルを開きます。

  1. sudo nano /etc/grafana/grafana.ini

[users]見出しの下にあるauto_assign_org_roleディレクティブを見つけ、行の先頭にある;を削除して設定のコメントを解除します。

ディレクティブを次のいずれかの値に設定します。

このチュートリアルでは、自動割り当てをViewerに設定します。

/etc/grafana/grafana.ini
...
[users]
...
auto_assign_org_role = Viewer
...

変更を保存したら、ファイルを閉じてGrafanaを再起動します。

  1. sudo systemctl restart grafana-server

サービスのステータスを確認します。

  1. sudo systemctl status grafana-server

以前と同様に、ステータスはactive (running)になります。

この時点で、GitHub組織のメンバーがGrafanaインストールを登録して使用できるように、Grafanaを完全に構成しました。

結論

このチュートリアルでは、Grafanaをインストール、構成、保護し、組織のメンバーがGitHubを介して認証できるようにする方法も学びました。

現在のGrafanaのインストールを拡張するには、公式およびコミュニティで構築されたダッシュボードおよびプラグインのリストを参照してください。 Grafanaの一般的な使用方法の詳細については、公式のGrafanaドキュメントを参照するか、その他の監視チュートリアルを確認してください。

モバイルバージョンを終了