【发布时间】:2019-03-28 21:51:01
【问题描述】:
背景
接线
我在 AWS Elasticsearch Service 上有一个 Elasticsearch 集群。它启用了 Kibana 端点。 Cognito 提供基于用户组的 AWS 角色。
Cognito 组和 AWS 角色
AWS Cognito 为组 viewer 设置的 AWS 角色是 arn:aws:iam:123:role/kibana-viewer。
AWS Cognito 为组 admin 设置的 AWS 角色是 arn:aws:iam:123:role/kibana-admin。
所需的限制
在使用 Kibana 查看数据时,只有 admin 组应该有权访问特定的索引模式。有限索引 Elasticsearch 模式是secret-*。
viewer 组应该不能够通过 Kibana 访问 secret-*。
问题
如何仅阻止角色 arn:aws:iam:123:role/kibana-viewer 访问 AWS Elasticsearch 集群中的 secret-* 索引模式?
我尝试过的
第一次尝试
在访问策略中设置如下语句:
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:123:role/kibana-viewer"
},
"Action": "es:*",
"Resource": "arn:aws:es:my-region:123:domain/my-domain/*"
}
viewer 能够访问索引secret-1。
第二次尝试
将上述Resource设置为arn:aws:es:my-region:123:domain/my-domain/secret-*,viewer无法登录,原因如下:
User: x:x:x::xx:x is not authorized to perform: es:ESHttpGet
第三次尝试
设置两个语句:
{
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam:123:role/kibana-viewer"
},
"Action": "es:ESHttpGet",
"Resource": "arn:aws:es:my-region:123:domain/my-domain/secret-*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:123:role/kibana-viewer"
},
"Action": "es:ESHttpGet",
"Resource": "arn:aws:es:my-region:123:domain/my-domain/*"
}
viewer 可以登录 Kibana,但由于 API 调用 403 错误 _plugin/kibana/api/saved_objects/?type=index-pattern&per_page=10000 而看不到任何数据。
【问题讨论】:
标签: amazon-web-services permissions kibana