背景
连线
我在AWS Elasticsearch服务上有一个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
。
期望的限制
只有admin
组在使用Kibana查看数据时才能访问特定索引模式。受限索引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调用_plugin/kibana/api/saved_objects/?type=index-pattern&per_page=10000
的403
错误,无法查看任何数据。