Dav*_*vid 2 encryption amazon-web-services aws-cloudformation aws-cli aws-lambda
创建Lambda函数时,通过GUI控制台加密环境变量并不难。我只需输入密钥值对,然后打开加密助手并输入我的KMS密钥的ARN。这使我可以加密该值,因此,在将其发送存储之前已对其进行了加密,如上图所示。
我要完成的工作是完全一样的,但是假设您不是在GUI控制台中而是通过CloudFormation模板(正在CLI中进行部署)部署Lamba函数。
这是我在CloudFormation模板中指定相关参数的方式:
"EnvironmentVariable" : {
"Type" : "String",
"Default" : "test",
"Description" : "Environment Variable"
},
"KmsKeyArn" : {
"Type" : "String",
"Description" : "KMS Key ARN if environment variables are encrypted"
},
Run Code Online (Sandbox Code Playgroud)
这是我在Lambda资源(模板的“资源”部分)中引用这些参数的方式:
"Environment" : {
"Variables" : {
"SomeVariable": {
"Ref" : "EnvironmentVariable"
}
}
},
"KmsKeyArn" : { "Ref" : "KmsKeyArn" },
Run Code Online (Sandbox Code Playgroud)
这是我在CLI中部署此模板的方式(更改了所有ARN和其他值以保护隐私,但保持其结构):
AWS cloudformation部署--template-file lambda-template.json --stack-name“ CLI-lambda-stack” --parameter-overrides S3BucketName =“ theBucket” S3FileLocation =“ lambda_function.zip” S3ObjectVersion =“ ZuB0eueEgh2yh5q00.DiykLNudujdsc5” DeadLetter =“ arn:aws:sns:us-west-2:526598937246:CloudFormationTests” EnvironmentVariable =“ testing” KmsKeyArn =“ arn:aws:kms:us-west-2:227866537246:key / b24e7c79-a14d-4a3e-b848- 165115c86210“ HandlerFunctionName =” lambda_function.lambda_handler“ MemorySize =” 128“ Role =” arn:aws:iam :: 507845137246:role / serverless-test-default-us-east-1-lambdaRole“ FuncName =” myCLILambda“
在CLI中运行此命令后,没有任何错误,但是当我在控制台中打开Lambda函数以检查结果时,会看到类似以下内容:
我要去哪里错了?感谢您的任何见解。
$ aws kms encrypt --key-id $KEY_ID --plaintext secretpassword --output text --query CiphertextBlob
AQICAHjZ + JlI8KKmiVc ++ NhnBcO0xX3LFAaCfsjH8Yjig3Yr2AFPIyKCp3XVOEDlbiTMWiejAAAAbDBqBgkqhkiG9w0BBwagXTBbAgEAMFYGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhai9vkA2KdU5gd + qAgEQgCnWW4F3fb7pTwmA2ppskJhUl0dJGEXIE5oDCr3ZsH7TlN5X381juPg0LA ==
像这样将其保存在CF模板中
"environment_variables": {
"SECRET_DATA": "AQICAHjZ+JlI8KKmiVc++NhnBcO0xX3LFAaCfsjH8Yjig3Yr2AFPIyKCp3XVOEDlbiTMWiejAAAAbDBqBgkqhkiG9w0BBwagXTBbAgEAMFYGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhai9vkA2KdU5gd+qAgEQgCnWW4F3fb7pTwmA2ppskJhUl0dJGEXIE5oDCr3ZsH7TlN5X381juPg0LA=="
}
Run Code Online (Sandbox Code Playgroud)
3,解密你的Lambda函数
kms = boto3.client('kms')
response = kms.decrypt(CiphertextBlob=os.environ['SECRET_DATA'].decode('base64'))
secret_data = response['Plaintext']
secret_data
Run Code Online (Sandbox Code Playgroud)
或尝试以下选项:https : //docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-about.html#sysman-paramstore-securestring
| 归档时间: |
|
| 查看次数: |
2202 次 |
| 最近记录: |