You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过IAM策略限制AWS托管ElasticSearch的Kibana数据访问?

当然可以实现!AWS托管的OpenSearch(原Elasticsearch服务)完全支持通过IAM策略结合OpenSearch自身的精细访问控制功能,来限制特定IAM组、角色或用户在Kibana中能看到的数据内容。你之前没找到方案,大概率是没把IAM身份和OpenSearch的文档级/字段级安全规则结合起来用,我来给你拆解具体的实现步骤:

核心实现思路:IAM身份 + OpenSearch精细访问控制

单纯的IAM策略只能控制是否能访问ES域或某个索引,但要过滤具体的数据内容,必须结合OpenSearch的**文档级安全(DLS)字段级安全(FLS)**功能,并且把这些安全规则和你的IAM身份绑定。

1. 先确认开启精细访问控制

首先要确保你的OpenSearch域已经启用了精细访问控制——这是使用DLS/FLS的前提。如果还没开启,你可以在AWS控制台的OpenSearch域配置页面找到这个选项,开启时可以选择用IAM作为主用户认证源,这样后续就能直接用IAM身份登录Kibana了。

2. 创建OpenSearch角色并配置数据过滤规则

接下来进入Kibana的Security管理页面,创建一个自定义角色(比如叫app-team-limited-viewer),然后给这个角色配置:

  • 索引权限:指定该角色允许访问的索引范围,比如app-logs-*
  • 文档级安全(DLS):用Lucene查询语法定义过滤条件,比如只允许查看team_id: "team-a"的日志,规则写为{"term": {"team_id": "team-a"}}
  • 字段级安全(FLS):如果需要隐藏敏感字段(比如用户手机号、密码哈希),可以在这里指定允许查看的字段列表,比如["timestamp", "log_content", "team_id"]

3. 绑定IAM身份到OpenSearch角色

这一步是把你的IAM用户/组/角色和刚才创建的OpenSearch角色关联起来,有两种常用方式:

方式一:通过Kibana控制台配置

在Kibana的Security > Roles mapping页面,添加一条新的映射:选择你的IAM身份(比如输入IAM角色的ARN:arn:aws:iam::123456789012:role/app-team-role),然后关联到之前创建的app-team-limited-viewer角色。

方式二:通过IAM策略辅助配置

你也可以在IAM策略中添加权限,允许特定IAM身份将自己映射到指定的OpenSearch角色,比如下面这个示例策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttpGet",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "arn:aws:es:us-east-1:123456789012:domain/your-es-domain/*"
    },
    {
      "Effect": "Allow",
      "Action": "es:ESHttpPut",
      "Resource": "arn:aws:es:us-east-1:123456789012:domain/your-es-domain/_plugins/_security/api/rolesmapping/app-team-limited-viewer",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/app-team-role"
        }
      }
    }
  ]
}

不过更推荐用Kibana控制台来做角色映射,操作更直观不易出错。

4. 验证配置效果

用绑定了该IAM角色的用户登录Kibana,尝试查看对应索引的数据:你会发现只能看到符合DLS过滤条件的文档,并且只能看到FLS允许的字段,完全实现了数据访问的精细化控制。

额外注意事项
  • 如果你使用的是较旧版本的Elasticsearch Service(低于7.10版本),可能需要用旧版的RBAC结合DLS/FLS,但现在的OpenSearch Service都已经支持精细访问控制了,建议升级到最新稳定版。
  • DLS规则会对查询性能有轻微影响,尤其是在数据量很大的索引上,所以尽量选择高基数、已做索引优化的字段作为过滤条件。
  • 确保IAM用户/角色的基础权限足够:至少需要允许访问Kibana和OpenSearch域的必要HTTP动作(比如es:ESHttpGetes:ESHttpPost)。

内容的提问来源于stack exchange,提问作者Mike

火山引擎 最新活动