簡體   English   中英

為 AWS Lambda 函數安全地提供 AWS RDS 憑證的最佳方式是什么?

[英]What is the best way to securely provide AWS RDS credentials to AWS Lambda functions?

我正在使用 AWS codepipeline 創建一個 CI/CD 管道來部署幾個 lambda 函數。 目前,我正在手動上傳 .zip 用於 lambda 函數的文件,其中包括一個 configuration.json 文件,該文件具有訪問 RDS 數據庫的憑據。

我已經創建了一個 SAM 模板來通過代碼管道部署 lambda 函數,但是,由於提交配置,我無法想出一種解決方案來為 lambda 函數提供 RDS 數據庫憑據。

AWS 機密管理器對我來說不是一個選擇,因為它會非常昂貴,因為數百萬個 API 調用會影響 lambda 函數。

您可以在某些藍圖上使用 AWS 給出的建議之一。 這個例子我取自松弛回聲通知,並在我的一些 lambda function 中使用它。 要加密您的秘密,請使用以下步驟:

  1. 創建或使用現有的 KMS 密鑰 - http://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html

  2. 單擊“啟用加密助手”復選框

  3. 將 <COMMAND_TOKEN> 粘貼到 kmsEncryptedToken 環境變量中,然后單擊加密

按照以下步驟完成命令 API 端點的配置

  1. 完成藍圖配置 select 在“配置觸發器”頁面上“打開”以確保安全。

  2. 在“角色名稱”字段中輸入您的執行角色的名稱。 您的函數的執行角色需要 kms:Decrypt 權限。 我們預先選擇了“KMS 解密權限”策略模板,會自動添加這些權限。

讓我展示一個簡單的 lambda function 寫入 python:

查看此示例注冊屏幕截圖

import boto3
import json
import logging
import os

from base64 import b64decode
from urlparse import parse_qs


ENCRYPTED_EXPECTED_TOKEN = os.environ['kmsEncryptedToken']

kms = boto3.client('kms')
expected_token = kms.decrypt(CiphertextBlob=b64decode(ENCRYPTED_EXPECTED_TOKEN))['Plaintext']

logger = logging.getLogger()
logger.setLevel(logging.INFO)

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM