美文网首页
Enable ES Kibana

Enable ES Kibana

作者: 张培_ | 来源:发表于2020-04-15 22:37 被阅读0次

    Kibana

    Kibana是一个非常流行的开源可视化工具,用来操作Elastic search。在AWS ES domain上,你可以看到一个kibana的link

    image.png

    但是当你点开这个link,想要使用kibana的时候,就会出现一个error:

    {
    "Message": "User: anonymous is not authorized to perform: es:ESHttpGet"
    }
    

    以上错误的意思很明显:

    匿名user没有权限去执行es:ESHttpGet
    

    为什么会有这种错误?

    我当前不是已经登录了一个user, 为什么会是匿名user呢?原因是当你直接点开kibana的link,相当于给es domain发了一个HTTPs请求

    GET https://EShostName/_plugin/kibana/
    

    你发送这个请求的时候直接使用了浏览器,肯定是匿名的,而且是一个GET请求,因此这个报错非常make sense, 一个匿名的用户没有权限执行es:ESHttpGet请求。

    如何Access kinbana

    其实就是说如何有权限给GET https://EShostName/_plugin/kibana/发请求?

    每一种AWS资源,都可以给自己配置access controll policy,去限制其他资源或者其他Role对自己的访问。当然Elatsic search也是一样

    image.png

    我们可以通过上图红框标明的位置去修改当前这domain的access controll policy。

    ES提供了很多policy帮助你controll access to your cluster:

    • Resource-based Policies
    • Identity-based Policies
    • IP-based Policies

    https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-ac.html#es-ac-types-ip

    这里我们需要使用IP-based Policies进行access kibana的controll。

    IP-based Policies

    这种policy限制只有一个或者多个IP地址可以access cluster。这种policy最大的优势是允许unsign的request发往cluster。其实就是任何匿名User,只要给ES发请求的IP地址在IP-based Policies的white list中,就可以给ES发请求。

    这种policy对ES来说非常的便捷,因为ES中基本上所有的操作都是通过HTTP请求实现。

    如何配置kibna的access?

    对于kibana我们选择使用IP-based Policies, 因为本身kibana并不能支持IAM Role、User

    可以将下面的policy配置给cluster domain:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "*"
          },
          "Action": [
            "es:ESHttp*"
          ],
          "Condition": {
            "IpAddress": {
              "aws:SourceIp": [
                "192.0.2.0/24"
              ]
            }
          },
          "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*"
        }
      ]
    }
    

    上买的policy允许IP地址在IpAddress中的匿名user发任何ES HTTP请求到test-domain中。

    如果我们将这个policy配置给test-domain domain,那么就以为这个匿名用户可以发ES GET请求了,那么此时你再打开kibana的link(其实就是给ES发GET请求)就可以成功了。

    相关文章

      网友评论

          本文标题:Enable ES Kibana

          本文链接:https://www.haomeiwen.com/subject/ynjkvhtx.html