问题标签 [aws-kms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
343 浏览

amazon-s3 - AWS S3 文件跨账户未解密

我目前正在尝试访问另一个 VPC 中的 S3 文件,并且我能够成功。但是当文件进来时,它们仍然是加密的。

我在 VPC A 中有机器试图读取 VPC B 中的 S3 文件。当文件进入 VPC B 中的存储桶时,这些文件是服务器端加密的。我成功承担了角色,并且文件来自 VPC B 中的 S3 存储桶到 VPC A. 但是,我在 VPC A 中的机器中的文件应该以 json 格式输入,但似乎仍然是加密的。

当我在 VPC A 中有机器从 VPC A 中的 S3 存储桶读取服务器端加密文件时,我就没有这个问题。这些文件似乎是自动解密的。

通过 CLI 命令的命令与此类似(在 VPC A 中):

使用 Java SDK 是这样的(在 VPC A 中):

关于如何确保文件在解密的 VPC 之间传递的任何想法?

最好的,克伦

0 投票
0 回答
231 浏览

amazon-web-services - 无法删除由 Amazon SES 创建的加密密钥

我第一次使用 AWS SES,让该服务为新组织创建一些默认加密密钥来加密电子邮件。但是,当我删除该组织时,密钥仍然存在。我现在无法安排删除它们,因为我没有必要的权限,即使以 root 用户身份签名也是如此。以下是这些密钥的当前政策:

如您所见,root 帐户既没有计划删除密钥的权限,也没有放置新密钥策略的权限。据我所知,我实际上无法删除这些键。我可以找到的有关此问题的所有文档和以前的帖子都假定用户自己创建了密钥,而我没有。所以我想在搞砸提交客户服务票之前,我会向社区征求建议。非常感谢您的帮助!

0 投票
8 回答
268656 浏览

python - boto3客户端NoRegionError:您必须仅在有时指定区域错误

我有一个 boto3 客户端:

但它发生在新机器上,它们动态打开和关闭。

为什么会这样?为什么只有一部分时间?

0 投票
1 回答
3795 浏览

amazon-web-services - DynamoDB:我们可以同时使用加密和跨区域复制吗?

DynamoDB:我们可以同时使用加密和跨区域复制吗?

我们正在为我们的新应用程序评估 DynamoDB。我们的要求是:

  • 静态数据加密
  • 用于灾难恢复的跨区域复制。我们在某个地区的应用程序必须仅依赖该地区的服务

使用 AWS 提供的 Java 库可以单独满足我们的要求。解决方案是:

但是,我们不确定这些解决方案是否可以协同工作。我们担心我们将无法解密跨区域复制的记录。客户端加密解决方案建议使用 KMS 管理的密钥在根处建立密钥层次结构。KMS 是特定于区域的,因此如果我们将记录复制到另一个区域,我们将无法解密它们。加密密钥在其他区域不可访问。

问题是:

  • 密匙在KMS,是不是就不可能解密或跨地域复制记录?
  • 是否有推荐的方法来复制加密的 DynamoDB 记录?有没有人这样做过?
  • 有没有我们应该考虑的替代方案?
0 投票
4 回答
10327 浏览

amazon-web-services - 尝试使用 KMS 在 Lambda 函数中解密密文会导致超时

使用 AWS CLI 从命令行解密密文时,密文被解密而不会出现问题:

当尝试从 js 脚本执行此操作时,此解密操作也可以在本地工作:

但是,当尝试在 AWS Lambda 函数的上下文中使用与上述几乎完全相同的代码执行此操作时,函数的调用会导致超时:

超时日志:

笔记:

  • 如果我注释掉对的调用kms.decrypt并尝试对console.logparams任何东西,那么这些值将毫无问题地输出。调用似乎存在某种问题kms.decrypt,并且没有返回超出超时的实际错误。
  • 附加到调用 lambda 函数的角色的策略包含附加的策略AWSLambdaVPCAccessExecutionRole,以及以下附加的内联策略:

policygen-lambda_basic_execution_and_kms_decrypt-201611131221

  • 我已经编辑了代码中的任何识别信息。
0 投票
1 回答
1903 浏览

aws-powershell - 如何在 AWS Powershell 脚本中使用 KMS 密钥加密数据

我正在尝试使用 AWS KMS 加密文本并创建一个 powershell 脚本。所以我曾经New-KMSDataKey加密我的 KMS 主密钥,它在输出中返回plaintextDataKeyciphertextblob.

现在我正在使用plaintextDataKey加密我的明文,Invoke-KMSEncrypt但我收到无效操作错误,如下所示:

在此处输入图像描述

下面是我的脚本:

我该怎么做才能使它正确?我在这里做错什么了吗?这里没有其他 cmdlet 来加密数据:http ://docs.aws.amazon.com/powershell/latest/reference/Index.html

有人可以帮忙吗?如何使用上述明文数据密钥加密我的内容?

0 投票
1 回答
1984 浏览

amazon-web-services - 使用 AWS Lambda 存储敏感环境变量的最佳实践是什么?

我的 AWS Lambda 函数需要填充包含敏感值的环境变量,例如主数据库密码。

Lambda 的新 env vars 功能使这变得超级简单。但是关于最佳实践是什么,或者如何实现它,这有点模糊。

在 Lambda 常见问题解答中,他们陈述了以下内容:

问:我可以将敏感信息存储在环境变量中吗?对于数据库密码等敏感信息,我们建议您使用 AWS Key Management Service 进行客户端加密,并将结果值存储cipher text在您的环境变量中。您需要在 AWS Lambda 函数代码中包含逻辑来解密这些值。

所以他们基本上是说您需要自己加密这些值,然后将加密的值输入到您的 Lambda 函数 env vars 中。然后,您需要在函数中包含将在实例化时解密该值的逻辑。在伪代码中,它看起来像这样:

在您的笔记本电脑上


在您的 Lambda 函数中

然后在您的函数中,您将有逻辑在实例化时对其进行解密:


很简单,但是您输入的任何值在您输入它们时都已经加密,它们允许您选择要使用哪个 KMS 密钥来加密这些值,您可以创建自己的 KMS 密钥并使用它而不是“默认“ 钥匙。

那么,在输入之前加密值有什么意义呢?如果您可以告诉 Lambda 使用您的my-lambda-env-key密钥进行加密,这与my-lambda-env-key在将您的笔记本电脑上的值发送到 Lambda 之前使用密钥加密它们不同吗?

0 投票
1 回答
2494 浏览

amazon-web-services - 要求在 S3 存储桶策略中使用特定密钥 ID 进行 KMS 加密

我试图要求放入存储桶中的所有对象都使用特定的 KMS 密钥进行加密。我设法要求 KMS 加密,但密钥规范不起作用。这是我目前的政策(没有真实的存储桶名称和 ID):

这正确地拒绝了没有指定任何服务器端加密的上传,但它仍然允许使用默认的 s3 密钥。

0 投票
0 回答
227 浏览

android - AWS SDK KMS ListKeysAsync 在 Xamarin/Android 上失败

我正在使用 Visual Studio 2015 在基于 Xamarin 的项目上使用 AWSSDK.KeyManagementService 和 AWSSDK.Core,并尝试在我的 Android 构建(SDK 23)上对其进行测试。我通过 NuGet 安装了 AWS 的东西,一切都很好。这是我第一次尝试使用 AWS 开发工具包。

当我尝试将 KMS 用于 ListKeysAsync() 之类的简单操作时,我得到了 Amazon.Runtime.Internal.HttpErrorResponseException 的转储。我没有使用代理。

这是顶级异常:

下面有一个非常大的堆栈跟踪:

然后在顶部的下面有第二个例外:

及其堆栈跟踪:

第二个错误后的请求指标是:

我的直觉告诉我,解组错误与 中的 Java 日期/时间字符串有关x-amz-date" (20161227T234717Z),其中日期和时间部分之间夹有一个“T”。该错误表示存在无效字符“T”。

在使用 Json.Net 解组 Java 创建的 JSON 请求时,我遇到了类似的问题,并且不得不为 .Net 的 DateTime 对象使用我自己的自定义转换器。

我不确定该解组错误是否与第一个 HTTP 异常有关。

我是 AWS 开发工具包的新手,只需要为我正在进行的项目使用系统的 KMS 部分。

当我导入 AWSSDK.Core 和 AWSSDK.KeyManagementService 时,它​​加载了一些依赖项。这是列表:

  • AWSSDK.CognitoIdentity v3.3.0.0 - 运行时 v4.0.30319 [仅用于测试]
  • AWSSDK.Core v3.3.0.0 - 运行时 v4.0.30319
  • AWSSDK.KeyManagementService v3.3.0.0 - 运行时 v4.0.30319
  • AWSSDK.SecurityToken v3.3.0.0 - 运行时 v4.0.30319
  • PCLCrypto v1.0.0.0 运行时 v4.0.30319
  • PCLStorage v1.0.2.0 - 运行时 v4.0.30319
  • PCLStorage.Abstractions v1.0.2.0 v4.0.30319

我的 Android 项目是使用 Visual Studio 2015 Update 3 为 SDK 23 (Marshmallow) 构建的。

这是我遇到问题的代码:

我只使用 Cognito 的东西进行测试。这是ListKeysAsync()我遇到问题的电话。

有人有什么想法吗?我的应用程序中的其他任何地方都没有其他 AWS 代码 - 除了“使用”语句。Application.OnStart()顺便说一句,如果这很重要,则从方法调用此代码。

先感谢您。

杰夫·里德

0 投票
1 回答
269 浏览

amazon-web-services - 确保在 AWS 的 KMS 中只创建一个 CMK

AWS 开发工具包允许以编程方式创建新的 CMK。

但是,我想检查是否已经创建了给定的 CMK,如果是,请使用它而不是重新创建它。

据我所知,描述和别名都不是唯一标识符,并且与 S3 不同,它们没有唯一名称,所以我不确定代码中的其他属性可以用来检查给定的CMK 存在。

关于我如何做到这一点的任何想法?我缺少 CMK 属性吗?