簡體   English   中英

如何從亞馬遜彈性搜索服務訪問Kibana?

[英]How to access Kibana from Amazon elasticsearch service?

我創建了Amazon elasticsearch服務,並使用logstash將數據填充到其中,logstash已安裝在EC2實例上。 在Amazon彈性服務控制台頁面上,將有一個訪問Kibana的鏈接。

search-cluster_name-XXXXXXXXXXXXXXXXXXX.region_name.es.amazonaws.com/_plugin/kibana/

當我點擊鏈接時,瀏覽器拋出以下錯誤。

{"Message":"User: anonymous is not authorized to perform: es:ESHttpGet on resource: arn:aws:es:region_name:account_id:domain/cluster_name/_plugin/kibana/"}

我確定這與ES域的訪問策略有關。如何修改訪問策略,以便通過點擊指定的鏈接訪問Kibana?

您可以使用基於IAM和IP地址的訪問來設置訪問策略。 在這里看到我的答案 簡而言之:

  • EC2實例需要具有arn:aws:iam::aws:policy/AmazonESFullAccess策略的配置文件
  • 策略應包括兩個語句:第一個列表IAM訪問,第二個列表IP訪問。

這是一個示例策略(語句順序很重要!)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxxxxxxxxx:root"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-2:xxxxxxxxxxxx:domain/my-elasticsearch-domain/*"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-2:xxxxxxxxxxxx:domain/my-elasticsearch-domain/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "192.168.1.0",
            "192.168.1.1"
          ]
        }
      }
    }
  ]
}

我用於那個名為aws-es-kibana的代理工具。 它會將您發送給aws kibana的所有請求簽名。

IAM配置:

我創建了具有編程訪問權限的新IAM用戶“elasticsearch_user”(我獲得了與該帳戶關聯的accessKeyId和secretAccessKey)。

Elasticsearch配置:

我創建了彈性搜索策略,允許新創建的IAM用戶訪問:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::{YOUR_AWS_ACCOUNT_ID}:user/elasticsearch_user"
        ]
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:eu-central-1:{YOUR_AWS_ACCOUNT_ID}:domain/{YOUR_ELASTICSEARCH_DOMAIN}/*"
    }
  ]
}

從當地車站連接到kibana:

要從我的本地站(Windows)連接到kibana,我只需要輸入控制台:

SET AWS_ACCESS_KEY_ID=myAccessKeyId
SET AWS_SECRET_ACCESS_KEY=mySecretAccessKey

aws-es-kibana search-{PROTECTED_PART_OF_YOUR_ELASTICSEARCH_ENDPOINT}.eu-central-1.es.amazonaws.com

之后你應該代理訪問你的kibana: http//127.0.0.1 :9200 / _plugin / kibana

您必須為elasticsearch集群配置訪問策略。 有兩種選擇:

  1. 設置基於IAM的訪問策略
  2. 白名單列出人們可以訪問您的Kibana實例的某些IP。

選項1,使用基於IAM的訪問是更好的選擇:

  • 創建一個名為kibana_user的IAM用戶,具有編程訪問權限。 保存accessKeyId和secretAccessKey。 同時復制用戶的ARN
  • 配置訪問策略以授予對kibana_user訪問kibana_user
    • 轉到https://eu-central-1.console.aws.amazon.com/es/
    • 選擇您的elasticsearch域
    • 點擊“修改訪問政策”
    • 單擊“選擇模板”並使用名為“允許訪問一個或多個AWS賬戶或IAM用戶”的模板。 輸入kibana_user的ARN 這是它的樣子
  • 遺憾的是,AWS沒有提供以該用戶身份登錄然后連接到Kiabana的方法。 相反,如果您希望使用該用戶的密鑰對您向Kibana發出的HTTP請求進行簽名。 有一些工具可以幫助您,例如aws-es-proxy

我認真推薦使用基於IP的訪問的第二個選項。 即使你有靜態IP,

  • 該IP上的每個人都可以訪問有關elasticesarch的數據
  • 只有通過該API連接才能訪問。 不是來自你的手機,不是來自家里。

唯一有意義的情況是,如果您使用自己的身份驗證方法和靜態IP運行自己的代理服務器。

在我的例子中,我有一個運行的nginx服務器,它已經可以訪問elasticsearch服務。 所以我所要做的就是在這個nginx上添加一個代理。 無需更改AWS IAM。

將其添加到/ etc / nginx / sites-enabled / elasticsearch

server {
  listen   7777;
  server_name  127.0.0.1 default_server;
  access_log  /var/log/nginx/elasticsearch.access.log;
  location / {
    auth_basic "My Super Secret Server";
    auth_basic_user_file /etc/nginx/.elasticsearch_htpasswd;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         https://<your_server_here>.es.amazonaws.com/;
        proxy_set_header Authorization "";
        proxy_hide_header Authorization;
  }
}

並重新啟動nginx。 然后你可以訪問kibana:

http://your_nginx_server_name.com:7777/_plugin/kibana/app/kibana#/dev_tools/console?_g=()

文件/etc/nginx/.elasticsearch_htpasswd是標准的apache2 htaccess文件。 您可以在此處找到有關nginx的基本身份驗證的更多信息。

注意:基本身份驗證不是保護任何內容的推薦方法。 絕對不要在生產中使用它。

您可能需要具有基於IP的策略,並允許從特定IP(Kibana)訪問您的域。

其他選擇(除了改變訪問政策完全開放)將是簽署請求 - IIRC這幫助了我的朋友有類似的信息。

http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-signing-service-requests

另請參見同一頁面上的“將本地Kibana服務器連接到Amazon Elasticsearch Service”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM