首页 文章

在没有密钥对(RSA私钥)的aws cloudfront中签名的cookie

提问于
浏览
0

我正在使用Docker在一次性机器(AWS-ECS)中部署我的应用程序,拆分在Node.js中开发的微服务中 . 查看API以获取签名令牌以访问Cloudfront资源:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html,似乎是强制传递密钥对作为构造函数中的参数(initilization) .

我不想包含任何CloudFront密钥对,因为这些机器可能会死掉并存储任何文件,没有任何意义 . 有没有办法获得签名令牌,只是通过IAM策略授予这些机器的权限,比如CloudFrontFullAccess?我已经部署了一个服务来获取S3签名的URL,并且不需要使用密钥对,只需要IAM策略 .

1 回答

  • 0

    不,如所述,这是不可能的 .

    它适用于S3,因为实例角色导致临时IAM凭证可供实例使用,而S3签名URL使用IAM凭证 .

    CloudFront 's private key isn'是IAM的一部分,所以IAM策略(如 CloudFrontFullAccess )在这里没有帮助 . (该策略主要允许您配置CloudFront分配 . )

    您必须有权访问CloudFront RSA密钥才能生成CloudFront签名URL或签名cookie - 除此之外别无选择 .

    但是,一种直接存储密钥但直接将其用于实例的方法是将其放入EC2 Systems Manager Parameter Store .

    这是一个键/值存储,可以通过其IAM角色访问实例,除非您需要,否则您需要使用EC2 Systems Manager的任何其他部分 - 参数存储在没有任何其他设置的情况下可用 .

    Amazon EC2 Systems Manager参数存储为配置数据(如密码,数据库字符串和许可证代码)提供安全存储 . 您可以将参数存储为纯文本或加密对象 . [...] Parameter Store还通过将数据存储在一个安全的位置而不是整个机群的配置文件中,简化了管理配置数据的过程 . http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html

    单个参数值is 4096 characters的最大大小,足以容纳整个私钥 .

    您的代码很可能希望在启动时加载密钥,只需保留在内存中以便根据需要使用,或者可以将其写入临时文件 .

相关问题