首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对AWS弹性搜索HTTP请求在EB上验证EC2

问针对AWS弹性搜索HTTP请求在EB上验证EC2
EN

Stack Overflow用户
提问于 2020-07-14 00:19:40
回答 2查看 237关注 0票数 1

我试图从一个在弹性豆杆中运行EC2的Node.js实例向AWS弹性搜索发出HTTP请求(用于插入/索引删除/查询等)。我的问题是AWS处理身份验证的方式。

在弹性搜索索引中没有用于查询/更新等文档的SDK。(有一个用于管理域)。他们推荐的签署请求的方法是这里。简而言之,它们使用AWS.Signers.V4类将凭据添加到headers,并且需要访问密钥、秘密密钥和会话令牌。

我正在使用的EC2实例不将凭据存储在环境中(决策不在我手中),也不存储在文件中,这就是我在计算机上获取凭据的方式。它已经具有访问弹性搜索节点的正确角色,I需要提取三种凭据(访问密钥、秘密密钥和会话令牌)的最佳方法,因为它们作为参数传递给addAuthorization方法。我尝试记录CredentialProviderChain,但是没有一个提供程序有任何存储的凭据。本地日志显示环境变量和共享凭据文件,该文件具有预期的正确凭据。有人告诉我,我不应该使用假设的角色API (它确实返回凭据),这对我也没有意义,因为我正在承担一个EC2已经拥有lol的角色。

我偶然发现这种方法用于检索实例元数据,包括安全凭据。这是我最好的选择吗?还是有什么我没考虑过的选择?我对此不太感兴趣,因为我需要添加一些逻辑来检查进程是否在EC2实例中运行(这样我就可以在本地进行测试,而不是这样),所以它并不像我所期望的那样干净,我想确保我已经探索了所有的可能性。

AWS SDK如何处理身份验证?我认为,如果我使用AWS使用的相同方法,我将有最好的机会获得更改的批准,因为弹性搜索是我们必须手动签署请求的唯一服务。所有其他的都由SDK处理。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-14 22:04:33

答案简单得令人震惊,而且实际上已经记录在案了这里。AWS.config对象有一个getCredentials方法,该方法将默认凭据加载到AWS.config.credentials中,并且可以从那里在EC2中访问。

我的猜测是,它使用的是EC2实例元数据,因为它确实应该包含凭据,但我不知道为什么当我尝试在CredentialProviderChain中记录EC2实例元数据提供程序时,我得到了一个空对象,而在我的机器上记录的结果显示SharedIniFileCredentials和Environment凭据都包含tried。

票数 1
EN

Stack Overflow用户

发布于 2020-07-14 05:23:24

最简单和非常好的实践是使用SSM。系统管理器有一个参数存储库,它允许您保存加密的凭据。然后,您所需要做的就是为EC2分配一个IAM角色,其中包含一个访问SSM的策略,或者只需要编辑现有的角色,并给出完整的SSM访问权限,然后将其锁定为最小特权。

但是,当我们的资历经常变化时,这不是一个问题吗?难道每次我们的证件过期都要更新吗?

IAM用户有旋转密码,您需要一个服务帐户密码。

默认情况下,EC2可以访问某些东西,因为当您将其旋转起来时,您必须为EC2分配一个IAM角色。而且,大多数EC2 AMI都安装了AWS & SDK,因此您可以立即获取值。下面是一些要演示的Python:

代码语言:javascript
复制
ssm = boto3.client('ssm', region_name='ap-southeast-2', config=Config(proxies={'http': 'proxy:123', 'https': 'proxy:123'}))
key = "thePasswordKeyToGetTheValue"
response = ssm.get_parameter(Name=key, WithDecryption=True)
        value = response['Parameter']['Value']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62886233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档