データストリームとエイリアスの権限付与
Elasticsearchのセキュリティ機能を使用すると、データストリームおよびエイリアスに対して実行される操作を保護できます。
データストリームの権限
インデックス権限を使用して、データストリームへのアクセスを制御します。データストリームに対する権限を付与すると、そのバックインデックスに対しても同じ権限が付与されます。
たとえば、my-data-stream
は2つのバックインデックス、.ds-my-data-stream-2099.03.07-000001
と.ds-my-data-stream-2099.03.08-000002
で構成されています。
ユーザーはread
権限をmy-data-stream
に付与されます。
Js
{
"names" : [ "my-data-stream" ],
"privileges" : [ "read" ]
}
ユーザーはストリームのバックインデックスに対して自動的に同じ権限が付与されるため、ユーザーは.ds-my-data-stream-2099.03.08-000002
から直接ドキュメントを取得できます:
Python
resp = client.get(
index=".ds-my-data-stream-2099.03.08-000002",
id="2",
)
print(resp)
Ruby
response = client.get(
index: '.ds-my-data-stream-2099.03.08-000002',
id: 2
)
puts response
Js
const response = await client.get({
index: ".ds-my-data-stream-2099.03.08-000002",
id: 2,
});
console.log(response);
Console
GET .ds-my-data-stream-2099.03.08-000002/_doc/2
その後、my-data-stream
はロールオーバーします。これにより、新しいバックインデックス.ds-my-data-stream-2099.03.09-000003
が作成されます。ユーザーはread
権限をmy-data-stream
に持っているため、ユーザーは.ds-my-data-stream-2099.03.09-000003
から直接ドキュメントを取得できます:
Python
resp = client.get(
index=".ds-my-data-stream-2099.03.09-000003",
id="2",
)
print(resp)
Ruby
response = client.get(
index: '.ds-my-data-stream-2099.03.09-000003',
id: 2
)
puts response
Js
const response = await client.get({
index: ".ds-my-data-stream-2099.03.09-000003",
id: 2,
});
console.log(response);
Console
GET .ds-my-data-stream-2099.03.09-000003/_doc/2
エイリアス権限
インデックス権限を使用して、エイリアスへのアクセスを制御します。インデックスまたはデータストリームに対する権限は、そのエイリアスに対する権限を付与しません。エイリアスの管理に関する情報は、エイリアスを参照してください。
フィルタリングされたエイリアスをドキュメントレベルのセキュリティの代わりに使用しないでください。Elasticsearchは常にエイリアスフィルターを適用するわけではありません。
たとえば、current_year
エイリアスは2015
インデックスのみにポイントします。ユーザーはread
権限を2015
インデックスに付与されます。
Js
{
"names" : [ "2015" ],
"privileges" : [ "read" ]
}
ユーザーがcurrent_year
エイリアスからドキュメントを取得しようとすると、Elasticsearchはリクエストを拒否します。
Python
resp = client.get(
index="current_year",
id="1",
)
print(resp)
Ruby
response = client.get(
index: 'current_year',
id: 1
)
puts response
Js
const response = await client.get({
index: "current_year",
id: 1,
});
console.log(response);
Console
GET current_year/_doc/1
#### Js
``````js
{
"names" : [ "current_year" ],
"privileges" : [ "read" ]
}
`