标签: aws-kms

boto3 client NoRegionError:您有时必须仅指定区域错误

我有一个boto3客户端:

boto3.client('kms')
Run Code Online (Sandbox Code Playgroud)

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

    if endpoint is None:
        if region_name is None:
            # Raise a more specific error message that will give
            # better guidance to the user what needs to happen.
            raise NoRegionError()
Run Code Online (Sandbox Code Playgroud)

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

python linux boto3 aws-kms

97
推荐指数
7
解决办法
10万
查看次数

如何使用AWS SDK Javascript进行Async和Await

我正在使用KMS库使用AWS SDK.我想使用async和await而不是回调.

import AWS, { KMS } from "aws-sdk";

this.kms = new AWS.KMS();

const key = await this.kms.generateDataKey();
Run Code Online (Sandbox Code Playgroud)

但是,当包含在异步函数中时,这不起作用.

我怎么能在这里使用async并等待?

node.js aws-sdk aws-kms

40
推荐指数
2
解决办法
2万
查看次数

尝试使用KMS解密Lambda函数中的密文会导致超时

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

$ aws kms decrypt --ciphertext-blob fileb://encrypted-secrets --output text --query Plaintext --region us-east-1 | base64 --decode > decryped-secrets
Run Code Online (Sandbox Code Playgroud)

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

#!/usr/local/bin/node

const fs = require('fs');
const AWS = require('aws-sdk');
const kms = new AWS.KMS({region:'us-east-1'});

const secretPath = './encrypted-secrets';
const encryptedSecret = fs.readFileSync(secretPath);

const params = {
      CiphertextBlob: encryptedSecret
};

kms.decrypt(params, function(err, data) {
  if (err) {
    console.log(err, err.stack);
  } else {
    const decryptedScret = data['Plaintext'].toString();
    console.log('decrypted secret', decryptedScret);
  }
});
Run Code Online (Sandbox Code Playgroud)

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

'use strict';

const zlib = require('zlib');
const mysql …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-sdk aws-lambda aws-kms aws-sdk-nodejs

23
推荐指数
2
解决办法
7168
查看次数

使用KMS的AWS RDS加密是否会影响性能?

亚马逊

加密和解密是透明处理的,因此您无需修改​​应用程序即可访问数据

我的应用程序(Rails,MySQL,Elasticsearch)构建了大量图形,因此查询了大量数据.根据我之前的数据库加密经验,它确实影响了数据检索速度(因为我们只能说在读取和解密后记录匹配条件).

有没有相关的基准?或者您可能已经使用AWS的这种服务器端加密?我是否需要担心性能变化?

另外,我不太清楚是否可以以相同的"透明"方式加密Elasticsearch数据.我也会用你的建议

mysql security amazon-web-services elasticsearch aws-kms

13
推荐指数
1
解决办法
4401
查看次数

Sid属性在关键策略中有什么用?

是一个文档:

Sid –(可选)Sid是语句标识符,您可以使用任意字符串来标识该语句。

这是否意味着Sid参数只是描述?

amazon-web-services aws-cloudformation aws-kms

11
推荐指数
3
解决办法
3253
查看次数

如何在不使用二进制文件的情况下调用亚马逊的 AWS kms 解密函数?

我有代码可以检索使用亚马逊的 aws kms 加密功能加密的字符串。我想调用 aws kms 解密来取回未加密的值,但我想在不将字符串写入二进制文件的情况下执行此操作。我发现的所有示例都假设您将使用 linux 的 base64 命令或 Window 的 certutil 命令将 base64 编码的加密值转换为二进制文件。我正在尝试在 Windows 系统上执行此操作。在我看来你应该能够运行:

aws kms encrypt --key-id <mykey> --plaintext "mysecret"
Run Code Online (Sandbox Code Playgroud)

这对我来说产生了这个结果:

{
"KeyId": "arn:aws:kms:us-east-1:192491131326:key/<mykey>",
"CiphertextBlob": "AQICAHjQ7sViXQdeS4wWbFZpkOQWvCdNXqiy4Cnz0/xEBe39SQGz0vofeAo0+SyOXv172fqkAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhchHh0ugGzwRTC4gAgEQgCMlkhYlCYk2SfYIkfQ6ruwA71KBcN7ih/OPzSE86OT/eBOz3Q=="
}
Run Code Online (Sandbox Code Playgroud)

然后我应该能够运行:

aws kms decrypt --ciphertext-blob AQICAHjQ7sViXQdeS4wWbFZpkOQWvCdNXqiy4Cnz0/xEBe39SQGz0vofeAo0+SyOXv172fqkAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhchHh0ugGzwRTC4gAgEQgCMlkhYlCYk2SfYIkfQ6ruwA71KBcN7ih/OPzSE86OT/eBOz3Q==
Run Code Online (Sandbox Code Playgroud)

取回结果。但到目前为止,我一直无法得到任何东西,除了:

An error occurred (InvalidCiphertextException) when calling the Decrypt operation:
Run Code Online (Sandbox Code Playgroud)

是否有一些参数可以传递给解密命令,以便它解密这个字符串?

amazon-web-services aws-kms

11
推荐指数
3
解决办法
1万
查看次数

复制数据库快照的最小KMS权限

我正在尝试设置aws rds copy-db-snapshot使用KMS加密密钥的最小权限:

$ aws rds copy-db-snapshot --source-db-snapshot-identifier rds-backup-share-
mysql --target-db-snapshot-identifier rds-backup-share-mysql-reencrypted --kms-key-id <kms-arn>
Run Code Online (Sandbox Code Playgroud)

(其中的所有内容都<>被我删除并包含有效值.)

不幸的是我收到此错误:

An error occurred (KMSKeyNotAccessibleFault) when calling the CopyDBSnapshot operation: The target snapshot KMS key [<kms-arn>] does not exist, is not enabled or you do not have permissions to access it.
Run Code Online (Sandbox Code Playgroud)

目前我允许这些行动:

  "Action": [
    "kms:ReEncrypt*",
    "kms:ListKeys",
    "kms:ListAliases",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:DescribeKey",
    "kms:Decrypt"
  ],
Run Code Online (Sandbox Code Playgroud)

如果我用它替换它kms:*{code},它是有效的,所以它必须是一个权限问题.

我试图通过CloudTrail找出正确的权限,但它只包含相同的无用错误消息.

所以我的实际问题:

  • CopyDBSnapshot的最小KMS权限是多少?
  • 是否有通用的方法来确定所需的权限?通过谷歌搜索所需的权限来浪费我的时间总是很痛苦.

编辑:这是--debug启用日志输出的底部:

2017-08-22 17:15:37,521 - MainThread - botocore.endpoint - DEBUG …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-rds aws-kms

10
推荐指数
2
解决办法
4860
查看次数

如何管理AWS中的非对称(公共/私有)密钥

我需要开发一种解决方案,以便在AWS中安全地存储对称和非对称密钥.这些密钥将由EC2和Lambdas上运行的应用程序使用.应用程序需要设置策略,以允许应用程序或lambda将密钥从密钥库中提取出来.密钥存储还应该管理密钥到期,在密钥到期时通知各个人.初始密钥交换是在我公司与其合作伙伴之间进行的,这意味着我们可能拥有密钥对的公钥或私钥,具体取决于数据传输方向.

我们已经看过KMS但是从我所看到的KMS不支持非对称密钥.我也在网上看到有些人正在使用S3(受KMS保护)或参数存储来存储密钥,但这并没有解决密钥管理的问题.

你们对此有什么想法吗?甚至是SaaS/PaaS建议?

amazon-ec2 public-key-encryption amazon-web-services aws-lambda aws-kms

8
推荐指数
1
解决办法
1015
查看次数

在使用 Terraform for AWS 时出现错误:“新的密钥策略将不允许您在未来更新密钥策略。”

在 AWS KMS 中运行 terraform 以创建密钥策略我收到错误:

  • aws_kms_key.dyn_logs_server_side_cmk:MalformedPolicyDocumentException:新的密钥策略将不允许您在未来更新密钥策略。状态码:400,请求ID:e34567896780780

有很多关于这个问题的帖子,但没有任何帮助。所以,我的 kms.tf 文件如下:

provider "aws" {
    access_key = "${var.aws_access_key}"
    secret_key = "${var.aws_secret_key}"
    region     = "${var.aws_region}"
} 
resource "aws_kms_key" "dyn_logs_server_side_cmk" {
    description = "dyn-logs-sse-cmk-${var.environment}"
    enable_key_rotation = "true"
    policy = <<EOF
{
    "Version":"2015-11-17",
    "Statement":[
    {
        "Sid": "Enable IAM User Permissions",
        "Effect": "Allow",
        "Principal": {"AWS": "arn:aws:iam::${var.account_id}:root"},
        "Action": "kms:*",
        "Resource": "*"
    }
    ]
    }EOF
}
Run Code Online (Sandbox Code Playgroud)

这就是我在输出之后看到的

terraform 应用“dyn-vpc.plan”

aws_kms_key.dyn_logs_server_side_cmk: Creating...
arn:                 "" => "<computed>"
description:         "" => "dyn-logs-server-dyn"
enable_key_rotation: "" => "true"
is_enabled:          "" => "true"
key_id: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform aws-kms

8
推荐指数
2
解决办法
3286
查看次数

getSecretValue 回调在 AWS Lambda 中不起作用

我正在尝试使用 aws-sdk for Javascript 从 AWS Secret Manager 检索秘密值,我正在使用 Secret Manager 提供的代码片段,我已将此代码包含在 Lambda 函数中,但我看不到任何已定义的控制台日志回调函数里面。这是 lambda 代码:

exports.handler = async (event, context) => {
    const AWS = require('aws-sdk');
    const client = new AWS.SecretsManager({ region: "eu-west-2" });
    let secret;
    let decodedBinarySecret;

    console.log('STARTED');

    client.getSecretValue({ SecretId: "MagellanDev" }, function (err, data) {
        if (err) {
            console.log('Got Error: ', err.code);
            throw err;
        }
        else {
            if ('SecretString' in data) {
                secret = data.SecretString;
            } else {
                let buff = new Buffer(data.SecretBinary, 'base64');
                decodedBinarySecret = buff.toString('ascii'); …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services aws-lambda aws-kms aws-secrets-manager

7
推荐指数
1
解决办法
2331
查看次数