elasticsearch - AWS Elasticsearch 生成 api-key
问题描述
我使用 AWS CDK 在 AWS 中创建了一个弹性搜索服务。本来想用 IAM 来访问的,但是在 node 里做的方式太可怕了,所以我转而通过 api-key 来 auth。
如果我遵循elasticsearch docs,我会收到以下错误:
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-sign,我们只需要
aws4.sign
在nodejs http请求选项之外,传递,service,region和body到method选项。与此处的示例类似,服务为es
. 为弹性包装此签名的几个库是aws-es-connection和http-aws-es
推荐阅读
- spring - 为什么 spring-boot-starter-parent 1.4.7 之后没有 Velocity?
- selenium - 如何减少硒中网格的执行时间
- c++ - 向量元素类型不能同时具有析构函数和不可复制成员
- swift - swift中的static func和final class func有什么区别
- html - css停止工作时如何修复网站
- c# - 当我使用rigidbody2D.velocity.y 时出现语法错误
- apache-spark - 由于数据类型不匹配“SerializeFromObject”,Spark FlatMapGroupsWithStateFunction 抛出无法解析“named_struct()”
- android - 如何在适配器的arraylist中填充json数组项?
- r - 变量显示值,但 str 在 r 中显示 NULL。如何检查此类变量的结构?
- android - SwipeRefreshLayout 刷新动画不会停止,尽管我设置了 swipeView.setRefreshing(false)