Ubuntu 16.04でGrafanaをインストールして保護する方法

前書き

Grafanaは、https://prometheus.io/ [Prometheus]、https://www.influxdataなどのソースからの複雑なデータと統合するオープンソースのデータ視覚化および監視ツールです。 com / [InfluxDB]、https://graphiteapp.org/ [Graphite]、およびhttps://www.elastic.co/[ElasticSearch]。 Grafanaでは、データのアラート、通知、およびアドホックフィルターを作成できるほか、組み込みの共有機能を使用してチームメイトとのコラボレーションを容易にします。

このチュートリアルでは、Grafanaをインストールし、https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs [SSL証明書]で保護しますおよびhttps://www.digitalocean.com/community/tutorials/understanding-nginx-http-proxying-load-balancing-buffering-and-caching[Nginx reverse proxy]を使用すると、Grafanaのデフォルト設定をより厳密に変更できますセキュリティ。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • 1つのUbuntu 16.04サーバーは、sudo non -rootユーザーとファイアウォール。

  • 完全に登録されたドメイン名。 このチュートリアルでは、全体で `+ example.com +`を使用します。 Namecheapでドメイン名を購入するか、http://www.freenom.com/en/index.html [Freenom]で無料で入手するか、ご使用のドメインレジストラを使用できます。選択。

  • サーバー用に設定された次のDNSレコード。 方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [DigitalOceanでホスト名を設定する方法]を参照してください。それらを追加します。

  • サーバーのパブリックIPアドレスを指す `+ example.com +`を持つ* A *レコード。

  • サーバーのパブリックIPアドレスを指す「+ www.example.com +」を持つ* A *レコード。

  • Nginxは、https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 [Ubuntu 16.04にNginxをインストールする方法]チュートリアルの最初の2つの手順に従って設定しました。

  • Let’s Encryptが設定されたNginxサーバーブロック。https://www.digitalocean.com/community/tutorials/how-to-set-up-let-s-encrypt-with-nginx-server-に従って設定できます。 blocks-on-ubuntu-16-04 [Ubuntu 16.04でNginxサーバーブロックで暗号化を設定する方法]。

  • オプションで、https://github.com [GitHub]認証を設定するには、https://github.com/business [GitHubアカウントが組織に関連付けられている]が必要です。

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

Grafanaはhttps://grafana.com/grafana/download [公式ウェブサイトから直接ダウンロード]またはhttps://www.digitalocean.com/community/tutorials/ubuntu-and-debianを介してインストールできます。 -package-management-essentials#debian-package-management-tools-overview [APTリポジトリ]。 APTリポジトリを使用すると、Grafanaのアップデートのインストールと管理が簡単になるため、この方法を使用します。

Grafanaはhttps://packages.ubuntu.com/xenial/[Ubuntu 16.04の公式パッケージリポジトリ]で入手できますが、Grafanaのバージョンは最新ではない可能性があるため、https://でGrafanaの公式リポジトリを使用します。 packagecloud.io/[packagecloud]。

packagecloudをhttps://www.digitalocean.com/community/tutorials/how-to-use-gpg-to-encrypt-and-sign-messages[GPGキー]で + curl +`でダウンロードしてから、https:// www .digitalocean.com / community / tutorials / an-introduction-to-linux-io-redirection#pipes [pipe the output] to `+ apt-key +。 これにより、APTインストールの信頼できるキーのリストにキーが追加され、GPG署名のGrafanaパッケージをダウンロードして検証できるようになります。

curl https://packagecloud.io/gpg.key | sudo apt-key add -

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

sudo add-apt-repository "deb https://packagecloud.io/grafana/stable/debian/ stretch main"

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

sudo apt-get update

そして、Grafanaがpackagecloudリポジトリからインストールされることを確認してください。

apt-cache policy grafana

出力には、インストールされるGrafanaのバージョンとパッケージの取得元が示されます。 インストール候補が `+ https:// packagecloud.io / grafana / stable / debian +`の公式Grafanaリポジトリから取得されることを確認します。

Output of apt-cache policy grafanagrafana:
 Installed: (none)
 Candidate: 4.6.2
 Version table:
    4.6.2 500
       500  stretch/main amd64 Packages
...

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

sudo apt-get install grafana

Grafanaをインストールしたら、開始する準備が整いました。

sudo systemctl start grafana-server

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

sudo systemctl status grafana-server

出力には、ステータス、メインプロセス識別子(PID)、メモリ使用量など、Grafanaのプロセスに関する情報が含まれます。

サービスのステータスが「アクティブ(実行中)」でない場合は、出力を確認し、前述の手順を再トレースして問題を解決します。

Output of grafana-server status● grafana-server.service - Grafana instance
  Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
  Active:  since Thu 2017-12-07 12:10:33 UTC; 19s ago
    Docs: http://docs.grafana.org
Main PID: 14796 (grafana-server)
   Tasks: 6
  Memory: 32.0M
     CPU: 472ms
  CGroup: /system.slice/grafana-server.service
          └─14796 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins
...

最後に、起動時にGrafanaを自動的に開始するサービスを有効にします。

sudo systemctl enable grafana-server

出力は、 `+ systemd +`がGrafanaを自動起動するために必要なシンボリックリンクを作成したことを確認します。 エラーメッセージが表示された場合は、続行する前に端末の指示に従って問題を修正してください。

Output of systemctl enable grafana-serverSynchronizing state of grafana-server.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.

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

手順2-リバースプロキシの設定

SSL証明書を使用すると、Grafanaとの接続を暗号化することにより、データの安全性が確保されます。 ただし、この接続を使用するには、最初にNginxを再構成する必要があります。

リンク:#prerequisites [Prerequisites]でLet’s Encryptを使用してNginxサーバーブロックをセットアップしたときに作成したNginx構成ファイルを開きます。

sudo nano /etc/nginx/sites-available/

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

/etc/nginx/sites-available/example.com

...
   location / {
       # First attempt to serve request as file, then
       # as directory, then fall back to displaying a 404.
       try_files $uri $uri/ =404;
   }
...

SSLを介して通信するようにNginxをすでに設定しており、サーバーへのすべてのWeb トラフィックがすでにNginxを通過しているため、デフォルトでポート「+3000」で実行されるGrafanaにすべてのリクエストを転送するようにNginxに指示するだけです。

このロケーションブロック内の既存の `+ try_files `行を削除し、それをすべて ` proxy_ +`で始まる次の内容に置き換えます。

/etc/nginx/sites-available/example.com

...
   location / {
       proxy_pass http://localhost:3000;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'upgrade';
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
   }
...

完了したら、ファイルを保存してテキストエディターを閉じます。

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

sudo nginx -t

出力は、 `+ syntax is ok `と ` test is successful +`であることを示しているはずです。 エラーメッセージが表示された場合は、画面の指示に従ってください。

最後に、Nginxをリロードして変更を有効にします。

sudo systemctl reload nginx

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

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

ステップ3-資格情報の更新

すべてのGrafanaインストールではデフォルトで同じ管理ログイン認証情報が使用されるため、この手順では、セキュリティを改善するために認証情報を更新します。

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

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/default-login.png [Grafana Login]

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

次の画面で、*ホームダッシュボード*にようこそ。 ここで、データソースを追加し、ダッシュボードを作成、プレビュー、および変更できます。

画面の左上隅にある小さなGrafanaロゴをクリックして、アプリケーションのメインメニューを表示します。 次に、マウスで* admin *ボタンにカーソルを合わせて、メニューオプションの2番目のセットを開きます。 最後に、[プロフィール]ボタンをクリックします。

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/main-menu.png [Grafanaメニュー]

アカウントに関連付けられた*名前*、メール、および*ユーザー名*を変更できる[ユーザープロフィール]ページが表示されます。 設定*を UIテーマ*などの設定に更新したり、パスワードを変更したりすることもできます。

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/user-profile.png [Grafanaプロファイル設定]

  • Name Email 、および Username フィールドに使用する名前、メールアドレス、およびユーザー名を入力し、 Information セクションの Update *ボタンをクリックして設定を保存します。

必要に応じて、* UIテーマ*および*タイムゾーン*をニーズに合わせて変更し、[設定]領域の[更新]ボタンを押して変更を保存することもできます。 Grafanaは* Dark および Light * UIテーマと、デフォルトで* Dark に設定された Default *テーマを提供します。

最後に、ページの下部にある[パスワードの変更]ボタンをクリックして、アカウントに関連付けられているパスワードを変更します。 これにより、[パスワードの変更]画面が表示されます。

現在のパスワード* admin Old Password フィールドに入力してから、使用を開始するパスワードを New Password および Confirm Password *フィールドに入力します。

[パスワードの変更]をクリックして新しい情報を保存するか、[キャンセル]を押して変更を破棄します。

そこから、[ユーザープロフィール]ページに戻ります。画面の右上隅に、[ユーザーパスワードが変更されました]を示す緑色のボックスが表示されます。

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/user-profile2.png [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 =
...

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

/etc/grafana/grafana.ini

...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

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

ダッシュボードへの匿名アクセスを許可する必要がない限り、行の先頭にある「; +」を削除してこのディレクティブのコメントを外し、オプションを「 false +」に設定します。

/etc/grafana/grafana.ini

...
[auth.anonymous]
enabled =
...

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

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

sudo systemctl restart grafana-server

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

sudo systemctl status grafana-server

前と同じように、出力はGrafanaが「アクティブ(実行中)」であることを報告する必要があります。 そうでない場合は、追加のヘルプについて端末メッセージを確認します。

次に、Webブラウザで「+ https:// +」を指定して、*サインアップ*ボタンがなく、ログイン認証情報を入力しないとサインインできないことを確認します。

[サインアップ]ボタンが表示される場合、または匿名でログインできる場合は、チュートリアルを続行する前に、前述の手順を再検討して問題を解決してください。

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

(オプション)ステップ5-GitHub OAuthアプリのセットアップ

サインインの代替方法として、GitHubを介して認証するようにGrafanaを構成できます。GitHubは、承認されたGitHub組織のすべてのメンバーにログインアクセスを提供します。 これは、複数の開発者がGrafana固有の資格情報を作成せずに共同でメトリックにアクセスできるようにする場合に特に役立ちます。

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

画面の左側にあるナビゲーションメニューの[組織設定]の下で組織の名前をクリックします。

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/github-settings.png [GitHub設定ページ]

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

Grafanaはhttps://oauth.net/[OAuth](ローカルリソースへのリモートサードパーティアクセスを許可するためのオープンスタンダード)を使用してGitHubを介してユーザーを認証するため、新しいhttps://developer.githubを作成する必要があります。 .com / apps / building-oauth-apps / creating-an-oauth-app / [GitHub内のOAuthアプリケーション]。

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

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/organization-profile.png [GitHub組織の設定]

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

[アプリケーションの登録]ボタンをクリックして続行します。

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

  • アプリケーション名-これにより、異なるOAuthアプリケーションを区別できます。

  • *ホームページURL *-これは、GitHubにGrafanaの検索場所を伝えます。

  • アプリケーションの説明-OAuthアプリケーションの目的の説明を提供します。

  • *アプリケーションコールバックURL *-これは、ユーザーが認証に成功すると送信されるアドレスです。 Grafanaの場合、このフィールドは `+ https:/// login / github +`に設定する必要があります。

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

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

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/new-oauth-application.png [GitHub OAuthアプリケーションの登録]

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

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

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/client-id.png [GitHubアプリケーションの詳細]

GitHub OAuthアプリケーションを作成したら、Grafanaを再構成する準備が整いました。

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

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

sudo nano /etc/grafana/grafana.ini

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

次に、OAuthアプリケーションの `+ client_id `および ` client_secret +`値でGitHubを使用するようにGrafanaを構成します。

  • `+ enabled `と ` allow_sign_up `をtrueに設定します。 これにより、GitHub認証が有効になり、許可された組織のメンバーが自分でアカウントを作成できるようになります。 この設定は、リンクで変更した「 [users] 」の下の「 allow_sign_up +」プロパティとは異なることに注意してください:#step-4-%E2%80%94-disabling-grafana-registrations-and-anonymous-access [ステップ4]。

  • `+ client_id `と ` client_secret +`をGitHub OAuthアプリケーションの作成中に取得した値に設定します。

  • 「+ allowed_organizations +」を組織の名前に設定して、組織のメンバーのみがGrafanaにサインアップしてログインできるようにします。

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

/etc/grafana/grafana.ini

...
[auth.github]
enabled =
allow_sign_up =
client_id =
client_secret =
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
;team_ids =
allowed_organizations =
...

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

/etc/grafana/grafana.ini

...
[server]
root_url = https://
...

設定を保存してファイルを閉じます。

次に、Grafanaを再起動して、変更を有効にします。

sudo systemctl restart grafana-server

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

sudo systemctl status grafana-server

出力がサービスが「アクティブ(実行中)」であることを示さない場合、詳細については画面上のメッセージを参照してください。

次に、 `+ https:// +`に移動して、新しい認証システムをテストします。 すでにGrafanaにログインしている場合は、画面の左上隅にある小さなGrafanaロゴをクリックし、ユーザー名の上にマウスを移動して、右側に表示されるセカンダリメニューで[ログアウト]をクリックします。あなたの名前。

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

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/login-with-github.png [GitHubを使用したGrafanaログインページ]

  • GitHub ボタンをクリックしてGitHubにリダイレクトします。GitHubでは、 Grafanaを許可*する意思を確認する必要があります。

緑色の[* github_organizationの認証*]ボタンをクリックします。 この例では、ボタンは* Authorize SharkTheSammy *と表示されます。

image:http://assets.digitalocean.com/articles/install-and-secure-grafana/authorize-grafana.png [GitHubで認証]

承認された組織のメンバーではないGitHubアカウントで認証しようとすると、ログインに失敗しました*というメッセージが表示されます。*ユーザーは必要な組織のメンバーではありません

GitHubアカウントが承認された組織のメンバーであり、GrafanaのメールアドレスがGitHubのメールアドレスと一致する場合、既存のGrafanaアカウントでログインします。

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

新規ユーザーのデフォルトの許可を変更するには、メインのGrafana構成ファイルを開いて編集します。

sudo nano /etc/grafana/grafana.ini

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

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

  • + Viewer +-既存のダッシュボードのみを使用できます

  • + Editor +-ダッシュボードの使用、変更、追加を変更できます

  • + Admin +-すべてを実行する権限があります

/etc/grafana/grafana.ini

...
[users]
...
auto_assign_org_role =
...

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

sudo systemctl restart grafana-server

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

sudo systemctl status grafana-server

前と同様に、ステータスは「+ active(running)+」と表示されます。 表示されない場合は、出力で詳細な手順を確認してください。

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

結論

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

Grafanaをシステム監視ソフトウェアスタックの一部として使用するには、https://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04 [UbuntuにPrometheusをインストールする方法を参照してください16.04]およびhttps://www.digitalocean.com/community/tutorials/how-to-add-a-prometheus-dashboard-to-grafana[PrometheusダッシュボードをGrafanaに追加する方法]。

現在のGrafanaインストールを拡張するには、https://grafana.com/dashboards [公式およびコミュニティ構築のダッシュボードのリスト]を参照してください。

また、一般的なGrafanaの使用方法の詳細については、http://docs.grafana.org/ [公式のGrafanaドキュメント]を参照してください。

Related