npm 包 @jmendiara/serverless-plugin-encrypted 使用教程

阅读时长 5 分钟读完

前言

在 serverless 架构中,我们经常需要使用敏感信息,如数据库连接字符串、密钥等。这些信息一般会以明文形式暴露在代码或配置文件中,存在一定的风险。@jmendiara/serverless-plugin-encrypted 是一个 npm 包,它提供了一种加密敏感信息的解决方案。本篇文章将详细介绍该 npm 包的使用方法。

安装

使用 npm 进行安装:

使用

配置

在 serverless.yml 文件中添加以下配置:

-- -------------------- ---- -------
--------
  - ----------------------------------------

-------
  ----------
    --------
      - - ---- -
      - - ---- -
      - - ---- -
    -------- - --- ----
      ------- - --- --
      ------------ - --- ------ --- --
      ---------------- - --- ------ ------ ---

其中,secrets 为要加密的敏感信息列表,profile 为 AWS 认证信息。AWS 认证信息可以通过 ~/.aws/credentials 文件或环境变量进行指定。具体配置请参考 AWS CLI 文档

加密

首先,需要在本地生成一个 RSA 密钥对。可以使用以下命令:

然后,使用以下命令对敏感信息进行加密:

其中,<secretName> 为敏感信息的名称,<publicKeyFilePath> 为公钥文件的路径,<stageName> 为部署环境的名称,如 dev。执行该命令后,会生成一个加密后的敏感信息。

部署

在 serverless 架构中,部署可以使用 sls deploy 命令完成。在部署之前,需要将加密后的敏感信息添加到账号的 Secrets Manager 中。可以使用以下命令:

其中,<secretName><stageName> 与加密时保持一致,<encryptedValue> 为加密后的敏感信息。

在 serverless.yml 文件中,可以使用 ${ssm:}${env:} 引用 Secrets Manager 中的敏感信息,示例如下:

至此,@jmendiara/serverless-plugin-encrypted 的使用就介绍完毕了。通过加密敏感信息,可以有效提高 serverless 应用的安全性。

示例代码

serverless.yml 文件示例:

-- -------------------- ---- -------
-------- ------
---------
  ----- ---
  -------- ----------
  ------- ---------
----------
  ------
    -------- -------------
    -------
      - -----
          ----- ------
          ------- ---
--------
  - ----------------------------------------
-------
  ----------
    --------
      - -------------------- - ----------
    --------
      ------- ---------
      ------------ -------------
      ---------------- -----------------

加密敏感信息示例:

添加敏感信息示例:

使用敏感信息示例:

-- -------------------- ---- -------
----- --- - -------------------
----- --- - --- ----------

------------- - ----- ------- -- -
  ----- - -------------------- - - ------------

  -- - ------- ------- -------
  ----- - --------- - - ----- ------------------ ----- ----------------------------------------- --------------- ---- -------------
  ----- ---------------- - ----------------

  ------------------------------

  ------ -
    ----------- ----
    ----- ---------------- -------- ------ ------- ---
  --
--

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bc5967216659e244399

纠错
反馈