Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

AzureでElastic Cloudを利用する 2024年版(構築編)

こんにちは、Elastic認定資格3種(※)を保持しているノムラです。
※Elastic社の公式認定資格(Elastic Certified Engineer / Elastic Certified Analyst / Elastic Certified Observability Engineer)

Elastic CloudはElastic社が提供しているSaaSサービスで、クラウドプロバ��ダはAWS、Azure、GCPをサポートしています。
最新バージョンのクラスタ構築や、既存クラスタのバージョンアップを数クリックで実施できるため、導入がお手軽です。

しかし実際に利用するとなると アクセス制限やEntra IDとのSAML連携など、考慮すべきことが多くあります。
意外にハマりどころが多い所だと思うので、手順や注意事項などをまとめてみました。

本記事ではAzure Marketplaceを利用してElastic Cloudを構築し、Security設定/認証設定を実施する手順を紹介します。
AWS上でElastic Cloudの構築、Security設定/認証設定を行いたい方はこちらの記事を是非ご覧ください。
acro-engineer.hatenablog.com

はじめに
1. Marketplace経由で構築
2. Security強化(IPフィルタリング設定)
3. Security強化(Private Link設定)
4. KibanaにEntra IDによるSAML認証を追加
まとめ

はじめに

以下本記事ではElastic Cloud(Elasticsearch Service)の名称を統一して「Elastic Cloud」で記載します。

AzureでElastic Cloudを構築するステップ

以下の4つのステップでAzure上にElastic Cloudを構築することが可能です。

  1. Marketplace経由で構築
  2. Security強化(IPフィルタリング設定)
  3. Security強化(Private Link設定)
  4. KibanaにEntra IDによるSAML認証を追加

構成イメージは下図です

構成イメージ

以下それぞれのステップについて構築/設定方法を解説していきます。

1. Marketplace経由で構築

Marketplaceでの導入手順

1つ目のSTEPとして、Azure Marketplace経由でElatic Cloudを構築していきます。

(1) Azure MarketplaceのElatic Cloudのページにアクセスし、「購読する」を押下

azuremarketplace.microsoft.com

「購読する」を押下する
(2) サブスクリプション、リソースグループ、リソース名を設定する
サブスクリプション、リソースグループ、リソース名を設定する
(3) 画面下に表示されている「Review + create」を押下する
「Review + create」を押下する
(4) Review で問題が無いことを確認し「Create」を押下する
「Create」を押下する
(5) DeployしたKibanaにログイン確認する

無事作成されたDeploymentのKibanaにログインできました。
URLは「https://<Deployment名>.kb.westus2.azure.elastic-cloud.com/app/home」のように作成されたDeployment名が付与されます。

DeployしたKibanaにログイン確認する

2. Security強化(IPフィルタリング設定)

次のステップとして構築したDeploymentにIPフィルタリングを設定していきます。

IPフィルタリングで出来ること/メリット

IPフィルタリングを設定することで、Deployment(Elasticsearch、Kibana)へのアクセス制限が可能となります。
詳細については以下のブログを参照ください。
www.elastic.co

では実際に設定してみましょう。

IPフィルタリング設定方法

(1) 作成したDeploymentの管理画面から「Features」を押下
「Features」を押下
(2) 「Add traffic filters」を押下し、「Create filter」を押下
Add traffic filtersを押下
Create filterを押下
(3) IPアドレス等の条件を入力後、「Create filter」を押下
IPアドレス等の条件を入力後、「Create filter」を押下

作成に成功すると以下のように作成されたIPフィルタリングの定義が表示されます。

IPフィルタリングの定義が表示される
(4) DeploymentのSecurity設定画面の「Apply filter」を押下し、作成したルールをDeploymentに適用
Apply filterを押下

作成したIPフィルタリングの定義を適用します。

作成したIPフィルタリングの定義を適用する

以上でElastic Cloud上に構築したDeploymentにIPフィルタリングの定義を適用することができます。

3. Security強化(Private Link設定)

続いてPrivate Linkも設定していきましょう。
Private Linkを設定することで、インターネットを経由しない通信となりセキュアにすることが可能です。

Private Link設定方法

(1) AzureのEndpointを作成

作成方法については以下を参照ください
www.elastic.co

注意点としては、Azure Private Link Service aliasの値は各Region毎に異なるためご利用のRegionに応じて値を設定してください。

(2) 「Add traffic filters」を押下し、「Create filter」を押下

IPフィルタリングの時と同様にfilter作成画面を開きます

Resource nameとResource IDに(1)で作成したEndpointの情報を入力し「Create filter」を押下
(4) IPフィルタリングと同様に作成したルールをDeploymentに適用

IPフィルタリングとPrivate Linkの2つのSecurity設定が適用されました

作成したルールをDeploymentに適用する

4. KibanaにEntra IDによるSAML認証を追加

ElasticsearchはSAML(Security Assertion Markup Language)による認証が可能です。
SAML連携による認証のメリットはユーザ管理を1つのサービスに集約可能なため管理/運用が容易になります。

そこで最後にKibanaにEntra IDによるSAML認証を追加しましょう。

Entra IDによるKibana認証設定方法

SAML認証の設定は以下の手順が必要です。詳細は公式ドキュメントを参照ください。
www.elastic.co

  1. Azure ID プロバイダーの構成
  2. SAML認証の設定
  3. role mapping (Kibana操作権限の設定)
(1) AzureポータルにログインしEntraに移動し「エンタープライズ アプリケーション」 に新しいアプリケーションを追加
「新しいアプリケーション」を押下
(2) 「独自のアプリケーションを作成する」を押下し、名前を入力して、「ギャラリーに見つからないその他のアプリケーションを統合する」オプションを選択し作成する
「独自のアプリケーションを作成する」を押下し、名前を入力して、「ギャラリーに見つからないその他のアプリケーションを統合する」オプションを選択
(3) 作成したアプリケーションに移動後「ユーザーとグループ」を押下し、必要なユーザーとグループを追加

ここで追加したユーザーとグループのみが Elastic スタックへアクセス可能です。

作成したアプリケーションに移動後「ユーザーとグループ」を押下し、必要なユーザーとグループを追加
(4) シングルサインオンを押下し、「基本的なSAML構成」を設定

以下の通りそれぞれURLを設定し「保存」を押下し、設定を反映します。

SAML構成設定 設定値
識別子 (エンティティ ID) <Kibana_Endpoint_URL>
応答 URL (Assertion Consumer Service URL) <Kibana_Endpoint_URL>/api/security/saml/callback
ログアウト URL <Kibana_Endpoint_URL>/logout
aaaa
(5) 作成したDeploymentの管理画面から「Edit」を押下
作成したDeploymentの管理画面から「Edit」を押下
(6) Elasticsearch右側のリンク「Manage user settings and extensions」を押下
Elasticsearch右側のリンク「Manage user settings and extensions」を押下
(7) ElasticsearchにSAML設定を適用

設定内容は以下

xpack.security.authc.realms.saml.kibana-realm:
            order: 2
            attributes.principal: nameid
            attributes.groups: "http://schemas.microsoft.com/ws/2008/06/identity/claims/groups"
            idp.metadata.path: "https://login.microsoftonline.com/<Tenant ID>/federationmetadata/2007-06/federationmetadata.xml?appid=<Application_ID>"
            idp.entity_id: "https://sts.windows.net/<Tenant_ID>/"
            sp.entity_id: "<Kibana_Endpoint_URL>"
            sp.acs: "<Kibana_Endpoint_URL>/api/security/saml/callback"
            sp.logout: "<Kibana_Endpoint_URL>/logout"

「Application_ID」には(1)で作成したアプリケーション ID、「Tenant ID」にはEntraのテナントIDをそれぞれ設定してください。

(8) Kibana右側のリンク「Edit user settings」を押下
「Edit user settings」を押下
(9) KibanaにもSAMLログイン用の設定を適用

設定内容は以下

xpack.security.authc.providers:
  saml.kibana-realm:
    order: 0
    realm: kibana-realm
    description: "Log in with Azure AD"
  basic.basic1:
    order: 1
(10) 画面下の「Save」を押下し設定を適用
「Save」を押下し設定を適用
(11) Kibana画面左側メニューの「Stack management」を押下し、その後「Role mappings」を押下

Role mappingsを定義することで、Entra IDで認証されたユーザに対してKibana操作権限の設定が可能です。

「Role mappings」を押下
(12) 「Create role mapping」を押下し、SAML認証のアカウントに権限を紐づける
「Create role mapping」を押下

以下の通り、SAML認証経由でログインしたユーザの権限を設定していきます

SAML認証経由でログインしたユーザの権限を設定

Kibanaへのログイン

設定後、登録したユーザでログインが可能です。

ログイン画面
ログイン後画面

まとめ

AzureでもElastic Cloudであれば構築/Security設定が容易です。
現在ご利用頂いているクラウドサービスに合わせてElastic Cloudを検討してみてください。

Acroquest Technologyでは、キャリア採用を行っています。

  • Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • マイクロサービス、DevOps、最新のOSSクラウドサービスを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 

少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

www.wantedly.com