从nextjs无服务器功能安全连接到aws elasticsearch

nc1teljy  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(607)

我正在尝试从nextjs中的无服务器功能安全地连接到es服务。无服务器的函数没有固定的ip地址或ip地址范围,所以我不能用这种方式保护它。我尝试过创建一个iam用户,并使用access key id和secret access key来创建这样的基本授权头。

const auth = btoa(`${accessKey}:${accessSecret}`);

然后我用它作为授权头,像这样。

`Authorization: Basic ${auth}`

请求返回时出现以下错误。

{
    "message": "Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header. Authorization=Basic XXXXXXXXXXXXXXXXXXXXXXXXXX"
}

我已通过访问策略授予iam用户权限。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXX:user/elasticsearch"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-2:XXXXXXXX:domain/team-up/*"
    }
  ]
}

这是保护数据库连接的正确方法吗?我曾尝试使用post/\u security/user/\u password端点在数据库上设置密码,但也失败了。



amazon声称支持基本授权。https://aws.amazon.com/elasticsearch-service/faqs/

plicqrtu

plicqrtu1#

在aws elasticsearch域的向导设置期间,我没有创建主用户。一旦域被创建,似乎就没有办法创建主用户。我删除了elasticseach域,并用一个主用户重新创建了它。
我遵循这个指南。https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/fgac.html#fgac-基本演练

相关问题