「Elasticsearch は、信じられないほど用途が広く強力な検索および分析エンジンです。大量のテキスト データをすばやく取り込み、整理、並べ替え、集約、および管理できます。
それにもかかわらず、Elasticsearch とそのエコシステム全体の最も優れた機能の 1 つは、鉄壁のセキュリティ機能です。 Elasticsearch には、HTTP 要求の署名などの機能が含まれており、認証されたユーザーのみがクラスターで操作を実行できます。
Elasticsearch のもう 1 つのセキュリティ機能は、ユーザーとロールの使用です。 Elasticsearch を使用すると、クラスター内のユーザーに特定のロールを割り当てることができます。これらは、ユーザー名がクラスターで実行できるアクションを決定するために使用されます。
Elasticsearch は、クラスターで作成されたすべてのユーザーにデフォルトの役割を割り当てます。デフォルトのロールにより、ユーザーは、パスワードの変更、ユーザー情報の取得などを担当する認証エンドポイントにアクセスできます。」
注: デフォルトの役割は、匿名ユーザーにも割り当てられます。
このチュートリアルの核心は、Elasticsearch ロールの基礎を説明することです。このチュートリアルを使用して、Elasticsearch ネイティブ レルムでロールをフェッチし、特定のユーザー名に割り当てられたロールを表示する方法を確認します。
飛び込みましょう。
Elasticsearch Get Roles API
Get Roles API を使用して、Elasticsearch クラスター内のロールに関する情報を取得します。リクエストの構文は次のとおりです。
得る / _安全 / 役割
上記のクエリは、システム内のすべてのロールを返す必要があります。
特定のロールに関する情報を取得するには、次の構文を使用できます。
得る / _安全 / 役割 /< 名前 >
注: この API を使用するには、ユーザーがクラスターに対する manage_security 権限を持っている必要があります。
リクエストが成功した場合、クエリはロールの配列を返す必要があります。
例 1 – クラスター内のすべてのロールを取得する
以下のリクエストの例では、Elasticsearch クラスター内のすべてのロールを取得します。
カール -XGET 「http://localhost:9200/_security/role?pretty=true」 -H 「kbn-xsrf: レポート」
出力例を以下に示します。
'apm_user' : {
'集まる' : [ ] 、
「インデックス」 : [
{
「名前」 : [
「apm-*」
] 、
「特権」 : [
'読んだ' 、
'view_index_metadata'
] 、
'allow_restricted_indices' : 間違い
} 、
{
「名前」 : [
「ウィンドウ近似*」
] 、
「特権」 : [
'読んだ' 、
'view_index_metadata'
] 、
'allow_restricted_indices' : 間違い
} 、
{
「名前」 : [
'window-approx-*'
] 、
「特権」 : [
'読んだ' 、
'view_index_metadata'
] 、
'allow_restricted_indices' : 間違い
} 、
{
「名前」 : [
「メトリクス-apm.*」
] 、
「特権」 : [
'読んだ' 、
'view_index_metadata'
] 、
'allow_restricted_indices' : 間違い
} 、
{
「名前」 : [
「メトリクス-apm-*」
] 、
「特権」 : [
'読んだ' 、
'view_index_metadata'
] 、
'allow_restricted_indices' : 間違い
} 、
{
「名前」 : [
「traces-apm.*」
] 、
「特権」 : [
'読んだ' 、
'view_index_metadata'
] 、
'allow_restricted_indices' : 間違い
} 、
注: 上記の出力は、このチュートリアルの範囲で切り詰められています。
例 2 – 特定の役割に関する情報を取得する
以下の例は、kibana_admin ロールに関する情報を返します。
カール -XGET 「http://localhost:9200/_security/role/kibana_admin」 -H 「kbn-xsrf: レポート」
結果のロール情報は次のとおりです。
「kibana_admin」 : {
'集まる' : [ ] 、
「インデックス」 : [ ] 、
「アプリケーション」 : [
{
'応用' : 「キバナ.キバナ」 、
「特権」 : [
'全て'
] 、
'資力' : [
「*」
]
}
] 、
'run_as' : [ ] 、
'metadata' : {
'_予約済み' : 真実
} 、
「transient_metadata」 : {
「有効」 : 真実
}
}
}
YAML でロール情報を取得する
デフォルトでは、役割の取得 API は結果を JSON 形式で返します。ただし、format パラメータを使用して別の形式を選択することもできます。
構文は次のとおりです。
得る / _安全 / 役割? フォーマット =json / yaml
たとえば、kibana_admin ロールに関する情報を YAML 形式で取得するには、次を実行できます。
結果の出力:
キバナ_管理者:
集まる: [ ]
インデックス: [ ]
アプリケーション:
- 応用: 「キバナ.キバナ」
特権:
- '全て'
資力:
- 「*」
run_as: [ ]
metadata:
_予約済み: 真実
transient_metadata:
有効: 真実
特定のユーザーの役割を表示する
特定のユーザー名 (役割を含む) に関する情報を表示したい場合は、次のようにリクエストを使用できます。
得る / _安全 / ユーザー
たとえば、次のようにユーザー情報を取得できるユーザー名「linuxhint」があるとします。
上記のリクエストは、次のようにユーザーに関する情報を YAML 形式で返す必要があります。
Linuxヒント:
ユーザー名: 「リナックス」
役割:
- 「視聴者」
- 「ウォッチャー_ユーザー」
フルネーム: 「linuxhint.com」
Eメール: ' [メール保護] '
metadata: { }
有効: 真実
ユーザーが viewer および watcher_user ロールを持っていることがわかります。
Kibana でのロールの表示
cat ロール API を使用したくない場合は、[管理] -> [スタック管理] に移動して、Kibana で Elasticsearch ロールを表示できます。
次に、[セキュリティ] -> [役割] に移動します
その後、ロールを表示および管理できます。
結論
この記事では、Elasticsearch Roles API を使用してクラスター内の特定のロールに関する情報を表示する方法を学習しました。また、ユーザー API を使用して特定のユーザー名のロールを表示する方法も発見しました。
読んでくれてありがとう!