Ubuntu20.04にGrafanaをインストールして保護する方法
著者はCOVID-19救済基金を選択し、 Write forDOnationsプログラムの一環として寄付を受け取りました。
序章
Grafana は、 Prometheus 、 InfluxDB 、 Graphite 、 ElasticSearch。 Grafanaを使用すると、データのアラート、通知、アドホックフィルターを作成できると同時に、組み込みの共有機能を通じてチームメートとのコラボレーションが容易になります。
このチュートリアルでは、Grafanaをインストールし、SSL証明書とNginxリバースプロキシで保護します。 Grafanaを設定すると、GitHubを介してユーザー認証を構成するオプションが表示され、チームの権限をより適切に整理できるようになります。
前提条件
このチュートリアルに従うには、次のものが必要です。
- Ubuntu 20.04の初期サーバーセットアップガイドに従ってセットアップされた1つのUbuntu20.04サーバー。これには、
sudo
特権を持つ非rootユーザーとufw
で構成されたファイアウォールが含まれます。 - 完全に登録されたドメイン名。 このチュートリアルでは、全体で
your_domain
を使用します。 Namecheap でドメイン名を購入するか、 Freenom で無料でドメイン名を取得するか、選択したドメイン登録事業者を使用できます。 - サーバー用に設定された次のDNSレコード。 DigitalOceanを使用している場合のドメインの追加方法の詳細については、ドメインの追加方法の記事を参照してください。 サーバーのパブリックIPアドレスを指すyour_domainを持つAレコード。 サーバーのパブリックIPアドレスを指すwww.your_domainを含むAレコード。
- Nginxは、ドメインのサーバーブロックを含む Ubuntu20.04チュートリアルにNginxをインストールする方法に従ってセットアップします。
- Let's Encryptが構成されたNginxサーバーブロック。これは、 Ubuntu20.04でLet'sEncryptを使用してNginxを保護する方法に従って設定できます。
- オプションで、 GitHub 認証を設定するには、組織に関連付けられたGitHubアカウントが必要です。
ステップ1—Grafanaのインストール
この最初のステップでは、GrafanaをUbuntu20.04サーバーにインストールします。 Grafanaをインストールするには、公式Webサイトから直接ダウンロードするか、APTリポジトリを使用します。 APTリポジトリを使用すると、Grafanaのアップデートのインストールと管理が簡単になるため、このチュートリアルではその方法を使用します。
GrafanaGPGキーをwgetでダウンロードし、出力をapt-key
にパイプします。 これにより、APTインストールの信頼できるキーのリストにキーが追加され、GPG署名されたGrafanaパッケージをダウンロードして検証できるようになります。
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
このコマンドでは、オプション-q
は、wget
のステータス更新メッセージをオフにし、-O
はダウンロードしたファイルを端末に出力します。 これらの2つのオプションにより、ダウンロードされたファイルのコンテンツのみがapt-key
にパイプラインされます。
次に、GrafanaリポジトリをAPTソースに追加します。
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
APTキャッシュを更新して、パッケージリストを更新します。
sudo apt update
これで、インストールを続行できます。
sudo apt install grafana
Grafanaをインストールしたら、systemctl
を使用してGrafanaサーバーを起動します。
sudo systemctl start grafana-server
次に、サービスのステータスを確認して、Grafanaが実行されていることを確認します。
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を自動的に開始できるようにします。
sudo systemctl enable grafana-server
次の出力が表示されます。
OutputSynchronizing 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
を使用します。
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+X
、Y
、nano
を使用している場合はENTER
を押してファイルを保存して閉じます。
次に、新しい設定をテストして、すべてが正しく構成されていることを確認します。
sudo nginx -t
次の出力が表示されます。
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
最後に、Nginxをリロードして変更をアクティブにします。
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のメイン構成ファイルを開いて編集します。
sudo nano /etc/grafana/grafana.ini
[users]
見出しの下にある次のallow_sign_up
ディレクティブを見つけます。
/etc/grafana/grafana.ini
... [users] # disable user signup / registration ;allow_sign_up = true ...
true
でこのディレクティブを有効にすると、ログイン画面にサインアップボタンが追加され、ユーザーは自分で登録して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 ...
enabled
をtrue
に設定すると、未登録のユーザーがダッシュボードにアクセスできるようになります。 このオプションをfalse
に設定すると、ダッシュボードへのアクセスが登録ユーザーのみに制限されます。
行の先頭にある;
を削除し、オプションをfalse
に設定して、このディレクティブのコメントを解除します。
/etc/grafana/grafana.ini
... [auth.anonymous] # enable anonymous access enabled = false ...
ファイルを保存して、テキストエディタを終了します。
変更を有効にするには、Grafanaを再起動します。
sudo systemctl restart grafana-server
Grafanaのサービスステータスを確認して、すべてが機能していることを確認します。
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のインストールに関する次の詳細を入力します。
- アプリケーション名-これは、異なるOAuthアプリケーションを互いに区別するのに役立ちます。
- ホームページのURL-これはGitHubにGrafanaの場所を指示します。 このフィールドに
https://your_domain
と入力し、your_domain
をドメインに置き換えます。 - アプリケーションの説明-これは、OAuthアプリケーションの目的の説明を提供します。
- アプリケーションコールバックURL-これは、認証に成功するとユーザーが送信されるアドレスです。 Grafanaの場合、このフィールドは
https://your_domain/login/github
に設定する必要があります。
GitHubを介してログインするGrafanaユーザーには、前の3つのフィールドに入力した値が表示されることに注意してください。そのため、意味のある適切なものを入力してください。
完了すると、フォームは次のようになります。
緑色のアプリケーションの登録ボタンをクリックします。
これで、新しいOAuthアプリケーションに関連付けられたクライアントIDとクライアントシークレットを含むページにリダイレクトされます。 セットアップを完了するには、両方の値をGrafanaのメイン構成ファイルに追加する必要があるため、両方の値をメモしてください。
警告: クライアントIDとクライアントシークレットは、攻撃の基礎として使用される可能性があるため、安全で非公開の場所に保管してください。 。
GitHub OAuthアプリケーションが作成されたら、認証にGitHubを使用するようにGrafanaを再構成する準備が整いました。
(オプション)ステップ6 —GrafanaをGitHubOAuthアプリとして構成する
GrafanaセットアップのGitHub認証を完了するために、Grafana構成ファイルにいくつかの変更を加えます。
まず、メインのGrafana構成ファイルを開きます。
sudo nano /etc/grafana/grafana.ini
[auth.github]
の見出しを見つけ、;allowed_domains =
と;team_ids =
を除くすべての行の先頭にある;
を削除して、このセクションのコメントを解除します。このチュートリアル。
次に、次の変更を行います。
enabled
とallow_sign_up
をtrue
に設定します。 これにより、GitHub認証が有効になり、許可された組織のメンバーが自分でアカウントを作成できるようになります。 この設定は、ステップ4で変更した[users]
のallow_sign_up
プロパティとは異なることに注意してください。client_id
とclient_secret
を、GitHubOAuthアプリケーションの作成中に取得した値に設定します。allowed_organizations
を組織の名前に設定して、組織のメンバーのみがGrafanaにサインアップしてログインできるようにします。
完全な構成は次のようになります。
/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を再起動して、変更をアクティブにします。
sudo systemctl restart grafana-server
最後に、サービスが稼働していることを確認します。
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構成ファイルを開きます。
sudo nano /etc/grafana/grafana.ini
[users]
見出しの下にあるauto_assign_org_role
ディレクティブを見つけ、行の先頭にある;
を削除して設定のコメントを解除します。
ディレクティブを次のいずれかの値に設定します。
Viewer
—既存のダッシュボードのみを使用できますEditor
—ダッシュボードを使用、変更、および追加できますAdmin
—すべてを実行する権限があります
このチュートリアルでは、自動割り当てをViewer
に設定します。
/etc/grafana/grafana.ini
... [users] ... auto_assign_org_role = Viewer ...
変更を保存したら、ファイルを閉じてGrafanaを再起動します。
sudo systemctl restart grafana-server
サービスのステータスを確認します。
sudo systemctl status grafana-server
以前と同様に、ステータスはactive (running)
になります。
この時点で、GitHub組織のメンバーがGrafanaインストールを登録して使用できるように、Grafanaを完全に構成しました。
結論
このチュートリアルでは、Grafanaをインストール、構成、保護し、組織のメンバーがGitHubを介して認証できるようにする方法も学びました。
現在のGrafanaのインストールを拡張するには、公式およびコミュニティで構築されたダッシュボードおよびプラグインのリストを参照してください。 Grafanaの一般的な使用方法の詳細については、公式のGrafanaドキュメントを参照するか、その他の監視チュートリアルを確認してください。