我使用AWS CDK在AWS中创建了一个弹性搜索服务。最初我想使用IAM访问它,但在节点中访问的方式很糟糕,所以我转向了通过api密钥进行身份验证。
如果我遵循弹性搜索文档,我会得到以下错误:AuthenticationException(401, '{"Message":"Your request: '/_security/api_key' is not allowed."}')
我认为这是由于我的默认用户没有访问_security
API的权限,但我如何创建所述API-key?
来自注释:
安全API是x-pack的一部分,AWS Elasticserach服务还不支持它。如果我们需要在AWS中使用它,可以将其用作AWS MarketPlace的SAAS。然而,还有其他选项可以保护AWS Elasticsearch:
- 使用cognito来保护弹性,为具有身份池和iam角色的用户提供细粒度控制。以下是一些细节
- 基于IP的资源策略。只要客户端在网络AWS/非AWS内*"条件限制为cidr范围的主体。任何人都可以访问,同一ip cidr范围内的用户都不能进行细粒度访问
- IAM身份验证:提供细粒度的控制,需要通过角色(也可以是单独的cognito(或用户信誉的AWS凭据,以使用v4签名对http请求进行签名。如果我们手动签署http请求,我们可以使用aws4签名,我们只需要将、服务、区域和主体传递给
aws4.sign
方法选项,以及nodejs http请求选项。类似于这里的示例,服务为es
。包装此弹性签名的几个库是aws-es连接和http-aws-es