システム認証を「ゲートウェイ」にまとめて細かい権限管理ができる「HashiCorp Boundary」

システム認証を「ゲートウェイ」にまとめて細かい権限管理ができる「HashiCorp Boundary」

  • GIGAZINE
  • 更新日:2020/10/18
No image

大規模なシステムを組織で管理するためには、認証システムの管理や適切な権限設定が必要ですが、実際に実現しようと思うと乗り越えるべき壁が多いのも事実。HashiCorpがリリースした認証システム「Boundary」を使うと、システムの認証を1箇所にまとめてユーザーやグループごとに細かく権限管理を行うことができます。

Boundary by HashiCorp

https://www.boundaryproject.io/

Announcing HashiCorp Boundary

https://www.hashicorp.com/blog/hashicorp-boundary

サーバーやデータベースへアクセスする場合、従来はSSHコマンドなどを実行して直接システムにアクセスしていましたが、アクセス権限などをきめ細かく設定できず、意図しない操作がそのまま実行されて障害につながる危険性がありました。この問題を解決するのがBoundaryで、システム全体の認証における「ゲートウェイ」の役割を果たすことで、システムに対するさまざまな認証を統合して管理することができます。

No image

BoundaryはWindows、macOS、Linuxのほか、FreeBSDSolarisなどで利用可能。今回はUbuntu 20.04にBoundaryをインストールしてみます。

まずは下記コマンドを実行して、Boundaryをインストール。

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"sudo apt-get update && sudo apt-get install boundary

今回は試用のため、下記コマンドを実行してBoundaryを開発モードで起動します。

boundary dev

Boundaryを起動すると、認証に必要なユーザー名やパスワードなどが表示されました。

No image

Boundaryを起動しているホストのブラウザで「http://127.0.0.1:9200」にアクセスするとBoundaryのログイン画面が表示されるので、起動時に生成されたユーザーIDとパスワードを入力。テストモードではユーザー名は「admin」、パスワードは「password」となっています。

No image

Boundaryの「組織(Organizations)」を選択する画面が表示されました。デフォルトの組織が用意されていますが、今回は新しく組織を作成するため「New」をクリック。

No image

組織名を入力して「Save」をクリックすると……

No image

新しく組織が作成され、プロジェクトを管理する画面に移ります。新規にプロジェクトを作成するため「New」をクリック。

No image

こちらもプロジェクト名を入力して「Save」をクリックし、プロジェクトを作成します。

No image

プロジェクトには「セッション(Sessions)」「ターゲット(Targets)」「ホストカタログ(Host Catalogs)」という設定項目があります。ひとまずプロジェクトで管理するホストを設定するため、「Host Catalogs」から「New」をクリック。

No image

ホストカタログ名を入力して「Save」をクリック。ホストカタログとは、Boundaryで管理するホストの一覧のことです。

No image

ホストカタログには、ホストの集合であるホストセット(Host Sets)が利用できます。「Host Sets」から「New」をクリック。

No image

ホストセット名を入力して「Save」をクリックします。

No image

続いて「Hosts」から「New」をクリックし、ホストの登録を行います。

No image

ホスト名とIPアドレスを入力して「Save」。

No image

「Targets」から「Host Sets」「Add Host Sets」と進み、ターゲットにホストセットを追加します。

No image

先ほど設定したホストを選択して「Add Host Sets」をクリック。これでホストカタログの設定は完了。

No image

ホストカタログにホストを登録したら、ターゲットの登録を行います。ターゲットとは接続したいサービスのことで、具体的にはSSHやRedis、Postgresなどを登録していきます。

No image

ターゲット名とポートを入力して「Save」をクリックすれば、プロジェクトの接続先に関する基本的な設定は完了。Boundaryでは接続先の管理を「ホスト」と「サービス」に分けて管理することで、簡単かつきめ細かい権限管理ができるようになっています。

No image

続いてプロジェクト内のユーザーやグループに権限を設定していきます。まずはユーザーを追加するため「Users」から「New」をクリック。

No image

ユーザー名を入力して「Save」。

No image

こんな感じでユーザーを登録しておきます。

No image

グループも「Groups」から同じように追加可能。

No image

なお、グループは名称の設定に加え、グループに参加させるユーザーも設定しておく必要があります。

No image

「Roles」ではユーザーやグループごとに、アクセスできるターゲットやホストを設定します。「Roles」タブから「New」をクリックし、ロールを追加します。

No image

ロール名を入力して「Save」をクリック。

No image

「Principals」をクリックし、「Add Principals」をクリック。権限を適用するユーザーやグループを選択していきます。

No image

ユーザーやグループを選択して「Add Principals」をクリック。これで選択したユーザーやグループにロールが適用されました。

No image

「Grants」ではこのロールで「何に」「どんな操作を」許可するかを設定します。記述フォーマットは「id=許可するターゲットやホストのID;type=タイプ;actions=許可する動作」という感じで、記述できたら「Add」をクリックして「Save」をクリック。

No image

「Auth Methods」の項目では、各ユーザーがBoundaryを経由してシステムにアクセスする際の「Boundaryとの認証方法」を設定します。

No image

こちらも認証名を入力して「Save」をクリック。

No image

この認証を利用するアカウントを設定するため「Accounts」から「Create Account」をクリックします。

No image

アカウント名、ログインネーム、パスワードを入力して「Save」。

No image

こんな感じで、各ユーザーに対して認証方法を用意。

No image

あとはユーザー設定の「Accounts」から「Add Accounts」をクリックして……

No image

用意したアカウントをユーザーに割り当て「Add Accounts」をクリックすればOK。これでBoundaryの設定は完了しました。

No image

これで接続できる……と思いきや、正常に接続することができず。デフォルトで用意されているアカウントでも接続を行うことはできませんでした。正しく動作した場合、以下のコマンドを実行してBoundaryの認証を通過し……

boundary authenticate password -auth-method-id=ampw_1234567890 -login-name=admin -password=password

Boundaryコマンドを経由してターゲットにアクセスすることができるようです。

boundary connect ssh -target-id ttcp_1234567890 -username james

また、ターゲットへアクセスが行われた場合、プロジェクトの「Sessions」でどのユーザーがどのターゲットに接続しているかを一覧で確認することが可能です。

No image

この記事をお届けした
グノシーの最新ニュース情報を、

でも最新ニュース情報をお届けしています。

外部リンク

  • このエントリーをはてなブックマークに追加