こんにちは、Elastic認定資格3種(※)を保持しているノムラです。
※Elastic社の公式認定資格(Elastic Certified Engineer / Elastic Certified Analyst / Elastic Certified Observability Engineer)
Elastic CloudはElastic社が提供しているSaaSサービスで、クラウドプロバイダはAWS、Azure、GCPをサポートしています。
最新バージョンのクラスタ構築や、既存クラスタのバージョンアップを数クリックで実施できるため、導入がお手軽です。
しかし実際に利用するとなると アクセス制限やEntra IDとのSAML連携など、考慮すべきことが多くあります。
意外にハマりどころが多い所だと思うので、手順や注意事項などをまとめてみました。
AzureでElasticsearch(Elastic Cloud)を使う時のポイントの記事一覧は以下です。
①運用編1
acro-engineer.hatenablog.com
②運用編2
<運用編2 近日公開予定!!>
本記事では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を構築することが可能です。
- Marketplace経由で構築
- Security強化(IPフィルタリング設定)
- Security強化(Private Link設定)
- KibanaにEntra IDによるSAML認証を追加
構成イメージは下図です
以下それぞれのステップについて構築/設定方法を解説していきます。
1. Marketplace経由で構築
Marketplaceでの導入手順
1つ目のSTEPとして、Azure Marketplace経由でElatic Cloudを構築していきます。
(1) Azure MarketplaceのElatic Cloudのページにアクセスし、「購読する」を押下
(2) サブスクリプション、リソースグループ、リソース名を設定する
(3) 画面下に表示されている「Review + create」を押下する
(4) Review で問題が無いことを確認し「Create」を押下する
(5) DeployしたKibanaにログイン確認する
無事作成されたDeploymentのKibanaにログインできました。
URLは「https://<Deployment名>.kb.westus2.azure.elastic-cloud.com/app/home」のように作成されたDeployment名が付与されます。
2. Security強化(IPフィルタリング設定)
次のステップとして構築したDeploymentにIPフィルタリングを設定していきます。
IPフィルタリングで出来ること/メリット
IPフィルタリングを設定することで、Deployment(Elasticsearch、Kibana)へのアクセス制限が可能となります。
詳細については以下のブログを参照ください。
www.elastic.co
では実際に設定してみましょう。
IPフィルタリング設定方法
(1) 作成したDeploymentの管理画面から「Features」を押下
(2) 「Add traffic filters」を押下し、「Create filter」を押下
(3) IPアドレス等の条件を入力後、「Create filter」を押下
作成に成功すると以下のように作成されたIPフィルタリングの定義が表示されます。
(4) DeploymentのSecurity設定画面の「Apply filter」を押下し、作成したルールをDeploymentに適用
作成した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作成画面を開きます
(3) Filter typeで[Private link endpoint]を選択し、Resource nameとResource IDに(1)で作成したEndpointの情報を入力し「Create filter」を押下
(4) IPフィルタリングと同様に作成したルールをDeploymentに適用
IPフィルタリングとPrivate Linkの2つのSecurity設定が適用されました
4. KibanaにEntra IDによるSAML認証を追加
ElasticsearchはSAML(Security Assertion Markup Language)による認証が可能です。
SAML連携による認証のメリットはユーザ管理を1つのサービスに集約可能なため管理/運用が容易になります。
そこで最後にKibanaにEntra IDによるSAML認証を追加しましょう。
Entra IDによるKibana認証設定方法
SAML認証の設定は以下の手順が必要です。詳細は公式ドキュメントを参照ください。
www.elastic.co
- Azure ID プロバイダーの構成
- SAML認証の設定
- 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 |
(5) 作成したDeploymentの管理画面から「Edit」を押下
(6) 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」を押下
(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」を押下し設定を適用
(11) Kibana画面左側メニューの「Stack management」を押下し、その後「Role mappings」を押下
Role mappingsを定義することで、Entra IDで認証されたユーザに対してKibana操作権限の設定が可能です。
Kibanaへのログイン
設定後、登録したユーザでログインが可能です。
まとめ
AzureでもElastic Cloudであれば構築/Security設定が容易です。
現在ご利用頂いているクラウドサービスに合わせてElastic Cloudを検討してみてください。
Acroquest Technologyでは、キャリア採用を行っています。
- Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- マイクロサービス、DevOps、最新のOSSやクラウドサービスを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。