LoginSignup
14
1

Instana Self-hosted on dockerをサクッとLDAP認証に設定する

Last updated at Posted at 2023-12-05

はじめに

こんにちは。Instana Observability Advent Calendar 2023の4日目の投稿です。

Instana self-hosted on dockerは検証用に気軽に立てられますが、Instanaのユーザーを追加したい場合、ユーザーを招待して、届いたメールアドレスでアクションが必要となるため、SMTPサーバーの設定などなかなか面倒です。

今回は、dockerの環境にLDAPサーバーを立てることで簡単にユーザーを追加する方法をご紹介します。

本手順は以下の環境で実施しています。

  • Instana Backend: Self-Hosted on docker (Single) Build 247-2
  • Platform: IBM Cloud VSI
  • OS: Ubuntu 20.04
  • docker: 24.0.7 (Community Edition)
  • docker-compose: v2.21.0

本手順の対象・流れ

  1. Instana Backend サーバー環境はdockerの環境なので、そこに相乗りしてLDAPサーバーを立てます。今回はサンプルファイルを用意したのでそれを使って構築します。
  2. Instana Web UIからLDAP認証に切り替える設定を行います。本手順では、グループ・マッピングの機能については言及しません。
  3. 最後に、LDAP認証でInstana Web UIにログインできることを確認します。

1. LDAPサーバーの構築

Instana Backend サーバーはインストール済みである前提とします。
dockerに加えて、docker-composeもインストール済みである前提とします。

必要なファイルをサーバーに置いて、docker compose up -dを打つだけです。
サンプルファイルは個人のgithubに公開しておきましたので使ってみてください。

1.1 docker-compose.ymlファイル

LDAPはOpenLDAPとし、コンテナイメージは osixia/openldap を使用します。
適当なディレクトリにdocker-compose.ymlファイルを配置または作成します。

mkdir -p /docker/openldap; cd /docker/openldap
vi docker-compose.yml

環境変数(environment)の定義については、必要に応じて変更して使ってください。
何が設定できるかが知りたい方は osixia/openldap のページをご覧ください。

LDAP_ORGANISATION: IBM
LDAP_DOMAIN: instana.local
LDAP_BASE_DN: dc=instana,dc=local
LDAP_ADMIN_PASSWORD: admin
LDAP_CONFIG_PASSWORD: config
LDAP_TLS: false

変更した場合は、ldapadd.ldifの内容も合わせて変更が必要となります。

1.2 ldapadd.ldifファイル

必要な情報は全てLDIFファイルで定義します。
そうすることで、一度作ってしまえば何度でも同じ環境をサクッと作成できるようになります。

docker-compose.ymlと同じディレクトリに配置します。

サンプルファイルでは、adminユーザーとは別にinstanaut1ユーザーを作成します。
ユーザーを追加する場合はブロック毎コピペして追記します。

# instanaut1, people, instana.local
dn: uid=instanaut1,ou=people,dc=instana,dc=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: instanaut1
cn: instanaut1
sn: instanaut1
mail: instanaut1@instana.local
userPassword: {SSHA}j2NdJprA9opORImusfmNW9fJ4PoQPT4I

ユーザーを追加した場合は、instanaグループのmemberにも追記するようにします。

# instana, group, instana.local
dn: cn=instana,ou=group,dc=instana,dc=local
objectClass: top
objectClass: groupOfNames
cn: instana
member: uid=admin,ou=people,dc=instana,dc=local
member: uid=instanaut1,ou=people,dc=instana,dc=local

1.3 openldapコンテナの起動

docker-compose.ymlldapadd.ldifが用意できたらコンテナを起動します。
初めて起動するときはイメージプルがありますのでインターネット接続が必要です。

docker compose up -d
[+] Running 10/10
 ✔ openldap 9 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled         17.1s 
   ✔ 45b42c59be33 Pull complete                                   1.0s 
   ✔ ae7fb8f59730 Pull complete                                   0.6s 
   ✔ 55443d9da5d5 Pull complete                                   8.9s 
   ✔ edbb56ba2f49 Pull complete                                   1.2s 
   ✔ 8690d28b09a7 Pull complete                                   1.6s 
   ✔ 7f3b6edb2b51 Pull complete                                   2.1s 
   ✔ 176dedf70b8e Pull complete                                   1.7s 
   ✔ 036fb52cada7 Pull complete                                   2.1s 
   ✔ 94404c4ec0d9 Pull complete                                   2.6s 
[+] Running 1/1
 ✔ Container openldap  Started  

1.4 ユーザーパスワードの変更

パスワードを変更します。

LDIFファイル内に記載するための暗号化されたパスワードを生成するにはslappasswdコマンドを使用します。Linux OSにパッケージを追加しても良いのですが、最終的に不要なパッケージを極力入れたくないというのもあり、コンテナを活用します。

slappasswdコマンドの結果{SSHA}で始まる文字列が返ってくるので、
それを使ってldapadd.ldif内の該当ユーザーのuserPassword属性の値を置換します。

docker exec openldap slappasswd -s <"暗号化したいパスワード">
{SSHA}YWD+yD8F3k2hEYOlGMj2d8Nist/V/Kfx

vi ldapadd.ldif

1.5 openldapコンテナの再起動

コンテナを再起動することで、新しいLDIFファイルでLDAPサーバーが再構築されます。

docker compose down
[+] Running 1/1
 ✔ Container openldap  Removed  
docker compose up -d
[+] Running 1/1
 ✔ Container openldap  Started

docker compose ps
NAME       IMAGE                    COMMAND                                SERVICE    CREATED          STATUS          PORTS
openldap   osixia/openldap:latest   "/container/tool/run --copy-service"   openldap   50 seconds ago   Up 49 seconds   0.0.0.0:389->389/tcp, :::389->389/tcp, 636/tcp

以上でLDAPサーバーの準備は完了です。

2. InstanaのLDAP認証設定

Instana Web UIにログインし、OpenLDAP認証を使用するように設定を行います。

設定を変更した後は、それまで使用していたローカルユーザは使用できなくなります。

設定 > 認証 > LDAP にて、
以下のように必要な設定を入力します。

設定項目 設定値 備考
URL ldap://openldap:389 openldapコンテナ名
ユーザー cn=admin,dc=instana,dc=local LDAP管理者なのでそのまま
パスワード LDAP管理者パスワード デフォルトはadmin
基本 dc=instana,dc=local Base DN
グループ・クエリー (cn=instana)
グループ・メンバー・フィールド member
ユーザー・クエリー・テンプレート (uid=%s)
Eメール・フィールド mail

image.png

(つづき)
LDAPユーザー・アカウントの設定
LDAP内のAdminユーザーを指定し、構成のテストをクリックします。
"Test succeeded"と出ればOKです。

設定項目 設定値 備考
ユーザー名 admin LDAP内のInstana Adminユーザー
パスワード Instana Adminパスワード LDAP内のInstana Adminパスワード

image.png

オプションの設定は割愛し、保存ボタンをクリックします。
画面上部に「構成が正常に保存されました。」と出ればOKです。

image.png

以上でInstanaのLDAP認証設定は完了です。

3. ログインの確認

Instana Web UIにLDAPに設定したユーザー/パスワードでログインします。

adminユーザーに関しては、Instana Adminユーザーに関連付けられており、設定も全て引き継がれています。
image.png

追加のinstanaut1ユーザーに関しては、初回ログイン時にユーザーが作成されます。
今回はグループマッピングを使用していないため、Defaultグループに割り当てられます。

image.png

おわりに

Instana Self-Hosted on dockerのLDAP認証環境を簡単に作成する方法をまとめました。
複数ユーザーを簡単に扱えるようになると、細かいRBAC設定による挙動確認やダッシュボードの共有などの挙動を試したりと検証の幅が広がるところが良いですね。

少しでも参考になれば幸いです。

14
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
1