我正在尝试从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/
1条答案
按热度按时间plicqrtu1#
在aws elasticsearch域的向导设置期间,我没有创建主用户。一旦域被创建,似乎就没有办法创建主用户。我删除了elasticseach域,并用一个主用户重新创建了它。
我遵循这个指南。https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/fgac.html#fgac-基本演练