IBM Cloud Docs
将端到端安全性应用于云应用程序

将端到端安全性应用于云应用程序

本教程可能会发生成本。 使用 成本估算器根据您的预计使用量生成成本估算。

本教程将指导您使用 IBM Cloud® 目录中提供的关键安全服务,并说明如何将这些服务一起使用。 提供文件共享的应用程序将落实安全性概念。

要构建完备的应用程序体系结构,必须对潜在的安全风险以及如何防范此类威胁有清楚的了解。 应用程序数据是一种不能丢失、泄露或被盗的关键资源。 此外,静态和动态数据应通过加密技术进行保护。 加密静态数据可以防止信息泄露,就算信息丢失或被盗也不会外泄。 通过 HTTPS、SSL 和 TLS 等方法加密动态数据(例如,在因特网上传输的数据)可防止窃听和所谓的中间人攻击。

在许多应用程序中,另一个常见要求是针对用户对特定资源的访问权进行认证和授权。 这可能需要支持不同的认证方案:使用社交身份的客户和供应商、来自云托管目录的合作伙伴以及来自组织的身份提供者的员工。

目标

  • 使用您自己的加密密钥对存储桶中的内容进行加密。
  • 要求用户在访问应用程序前进行身份验证。
  • 监控和审计云服务中与安全相关的API调用和其他操作。

本教程提供了一个样本应用程序,支持多组用户将文件上传到公共存储池,并通过可共享链接提供对这些文件的访问。 应用程序以 Node.js 编写,并作为容器部署到 IBM Cloud Kubernetes Service 或 Red Hat OpenShift on IBM Cloud。 它利用多种与安全相关的服务和功能来改善应用程序的安全状况。

本教程适用于在经典基础架构或VPC基础架构中运行的集群。

架构*" caption-side="bottom"}{: caption="*

  1. 用户连接到应用程序。
  2. 如果使用自定义域和 TLS 证书,证书由 Secrets Manager 管理并部署。
  3. App ID 可保护应用程序并将用户重定向到认证页面。 用户还可以进行注册。
  4. 应用程序通过存储在 Container Registry 中的映像在 Kubernetes 集群中运行。 系统会自动扫描此映像以查找漏洞。
  5. 已上传的文件存储在 Object Storage 中,随附的元数据存储在 IBM Cloudant 中。
  6. 对象存储区,App ID和 Secrets Manager 服务利用用户提供的密钥来加密数据。
  7. 应用程序管理活动由IBM Cloud Activity Tracker Event Routing记录,并路由到IBM Cloud Logs进行分析。

准备工作

本教程需要:

  • IBM Cloud CLI,
    • IBM Cloud Kubernetes Service 插件 (kubernetes-service),
    • Container Registry 插件 (container-registry),
  • kubectl,用于与 Kubernetes 集群进行交互,
  • git 以克隆源代码存储库。

您将在 解决方案教程入门 指南中找到有关为您的操作环境下载和安装这些工具的指示信息。

要避免安装这些工具,可以从 IBM Cloud 控制台使用 Cloud Shell

创建服务

在下一部分中,您将创建应用程序所使用的服务。

决定应用程序的部署位置

您创建的所有资源的 位置资源组 应与 Kubernetes 集群的 位置资源组 匹配。

捕获用户和应用程序活动

必须配置 IBM Cloud Activity Tracker Event Routing 以将审计事件路由到IBM Cloud Logs目标实例。 如果当前未在账户中配置,则按 配置IBM日志目标 中所述路由审计事件。

在本教程结束时,您可查看通过完成本教程的各步骤生成的事件。

为应用程序创建集群

IBM Cloud Kubernetes Service 和 Red Hat OpenShift on IBM Cloud 提供用于在 Kubernetes 集群中运行的容器中部署高可用性应用程序的环境。

如果您有现有的 Kubernetes 集群,并希望在本教程中使用,请跳过本节。在本教程的其余部分,集群名称将引用为 secure-file-storage-cluster,只需替换为您的集群名称即可。

具有一个 (1) 专区、一个 (1) 工作程序节点和最小可用大小(类型模板)的最小集群足以满足本教程的需求。 要创建 IBM Cloud Kubernetes Service 群集,请按照 创建 VPC 群集创建经典群集 的步骤进行操作。 要创建 Red Hat OpenShift on IBM Cloud 群集,请按照 创建 VPC 群集创建经典群集 的步骤操作。

使用您自己的加密密钥

Key Protect 可帮助您跨 IBM Cloud 服务为应用程序供应加密密钥。Key Protect 和 IBM Cloud Object Storage 协同工作以保护静态数据。 在此部分中,您将为存储区创建一个根密钥。

  1. 创建 Key Protect的实例。
    1. 选择地点
    2. 请将姓名设置为 secure-file-storage-kp
    3. 选择资源组,在其中创建服务实例,然后点击创建
  2. “密钥” 下,点击 “添加”按钮创建新的根密钥。 它将用于加密存储桶和 App ID 数据。
    1. 将“密钥类型”设置为根密钥
    2. 请将姓名设置为 secure-file-storage-root-enckey
    3. 然后 添加密钥

自带密钥 (BYOK) 可通过导入现有根密钥来提供。

设置用于用户文件的存储空间

文件共享应用程序会将文件保存到 Object Storage 存储桶中。 文件和用户之间的关系以元数据的形式存储在 IBM Cloudant 数据库中。 在此部分中,您将创建和配置这些服务。

用于保存内容的存储区

  1. 创建 Object Storage的实例。
    1. 选择 标准 套餐,并将 名称 设置为 secure-file-storage-cos
    2. 使用与之前服务相同的资源组,然后点击创建
  2. 服务凭证下,新建凭证
    1. 请将姓名设置为 secure-file-storage-cos-acckey
    2. 对于 角色,请选择 写程序
    3. 高级选项下,选中 包含 HMAC 凭证。 生成预签名的 URL 时需要此参数。
    4. 单击添加
    5. 记下证书。 在稍后步骤中您需要这些凭证。
  3. 单击导航侧边栏中的 端点:
    1. 弹性 设置为 区域,并将 位置 设置为目标位置:
    2. 对于经典基础设施:复制专用服务端点。 稍后在应用程序配置中将使用此端点。
    3. 对于VPC基础设施:复制 Direct 服务终端。 稍后在应用程序配置中将使用此端点。

在创建存储区之前,您将授予 Object Storage 服务实例对存储在 Key Protect 服务实例中的根密钥的访问权。

  1. 转至 IBM Cloud 控制台中的 管理> 访问权(IAM)> 授权
  2. 单击创建按钮。
  3. 源服务菜单中,选择 Cloud Object Storage
  4. 切换到 基于所选属性的资源,选中 源服务实例,然后选择先前创建的 Object Storage 服务实例。
  5. 目标服务菜单中,选择 Key Protect
  6. 切换到 基于所选属性的资源,检查 实例标识,选择先前创建的 Key Protect 服务实例。
  7. 启用读取者角色。
  8. 单击授权按钮。

最后,创建存储区。

  1. 存储器下的 资源列表 访问 Object Storage 服务实例。
  2. 点击创建存储桶,然后自定义您的存储桶
    1. name 使用唯一值,例如 <your-initials>-secure-file-upload
    2. 弹性设置为区域
    3. 将位置设置为创建 Key Protect 服务实例的相同位置。
    4. 存储类设置为标准
  3. 服务集成 (可选)/加密下,启用 密钥管理
    1. 通过单击 使用现有实例,选择先前创建的 Key Protect 服务实例
    2. 选择 secure-file-storage-root-enckey 作为密钥,然后单击 关联密钥
  4. 在“服务集成(可选)/监控和活动跟踪” 下,启用“活动跟踪” 以保存审计事件供分析。
    1. 单击复选标记后,应显示区域中 Activity Tracker 实例的服务信息。
    2. 现在,启用 “跟踪数据”事件,并选择 “读取和写入” 作为 “数据事件”。
  5. 单击创建存储区

用户与其文件之间的数据库映射关系

IBM Cloudant 数据库将包含从应用程序上传的所有文件的元数据。

  1. 创建 IBM Cloudant 服务的实例。
    1. 选择 Cloudant 作为产品。
    2. 选择与先前服务相同的 多租户 环境和 区域
    3. 请将姓名设置为 secure-file-storage-cloudant
    4. 使用先前服务所用的相同资源组
    5. 认证方法 设置为 IAM
    6. 单击创建
  2. 返回到资源列表,找到新创建的服务并单击该服务。 注意:您需要等待状态变为“激活”
    1. 服务凭证下,新建凭证
    2. 请将姓名设置为 secure-file-storage-cloudant-acckey
    3. 对于 角色,请选择 管理者
    4. 其余字段保留默认值。
    5. 单击添加
  3. 展开新创建的凭证并记下值。 在稍后步骤中您需要这些凭证。
  4. 管理下,单击 启动仪表板
  5. 点击创建数据库,创建一个名为 secure-file-storage-metadata非分区数据库。

认证用户

通过 App ID,可以保护资源并向应用程序添加认证。 作为本教程中未使用的替代方法,App ID 可以 集成 与 Kubernetes Service 以认证访问集群中部署的应用程序的用户。

在创建 App ID 服务之前,请授予服务对 Key Protect 服务的访问权。 您必须是您正在使用的 Key Protect 实例的帐户所有者或管理员。 您还必须至少具有 App ID 服务的“查看者”访问权。

  1. 转至 管理> 访问 IAM> 授权,然后单击 创建
  2. 选择 App ID 服务作为源服务。
  3. 选择 Key Protect 作为目标服务。
  4. 切换到 基于所选属性的资源,检查 实例标识,选择先前创建的 Key Protect 服务实例。
  5. 在“服务”访问权下分配 读者 角色。
  6. 单击 授权 以确认授权。

现在,创建一个 App ID 服务的实例。

  1. 浏览至 App ID 服务创建页面。

    1. 使用用于先前服务的相同 位置
    2. 选择累进层作为套餐。
    3. 服务名称设置为 secure-file-storage-appid
    4. 选择与先前服务相同的 资源组
    5. 从相应的下拉列表中选择已授权的 Key Protect 服务 名称根密钥
    6. 单击创建
  2. 认证设置选项卡的管理认证下,添加指向将用于应用程序的域的 Web 重定向 URL。 URL为 https://secure-file-storage.<Ingress subdomain>/redirect_uri。 例如:

    • 具有入口子域: mycluster-1234-d123456789.us-south.containers.appdomain.cloud
    • URL 是 https://secure-file-storage.mycluster-1234-d123456789.us-south.containers.appdomain.cloud/redirect_uri

    App ID 要求网络重定向 URLhttpshttp。 您可以在集群仪表板或通过 ibmcloud ks cluster get --cluster <cluster-name> 查看您的Ingress子域。

  3. 运行时活动认证设置下的同一选项卡中,允许在 IBM Cloud Activity Tracker Event Routing 中捕获事件。

  4. 创建服务凭证:

    1. 服务凭证下,新建凭证
    2. 请将姓名设置为 secure-file-storage-appid-acckey
    3. 对于 角色,请选择 管理者
    4. 其余字段保留默认值。
    5. 单击添加

您应该在 App ID 仪表板中定制使用的身份提供者以及登录和用户管理体验。 为简单起见,本教程使用的是缺省值。 对于生产环境,请考虑使用多因子认证 (MFA) 和高级密码规则。

部署应用程序

现在所有服务都已配置。 在此部分中,您要将教程应用程序部署到集群。 所有这些都可以在终端环境下完成。

获取代码

  1. 获取应用程序的代码:
    git clone https://github.com/IBM-Cloud/secure-file-storage
    
  2. 进入 secure-file-storage/app目录
    cd secure-file-storage/app
    

填写配置设置和凭证

  1. 如果您尚未登录,请使用 ibmcloud loginibmcloud login --sso 进行交互式登录。 将 IBM Cloud 区域和资源组作为目标。

    ibmcloud target -r <region> -g <resource_group>
    

    您可以在文档中的 常规 IBM Cloud CLI(ibmcloud)命令 主题中找到更多 CLI 命令。

  2. 在下一步中设置生成配置文件所需的环境变量。

    1. 首先通过替换 <YOUR_CLUSTER_NAME> 来设置集群名称:
      export MYCLUSTER=<YOUR_CLUSTER_NAME>
      
    2. 使用 ibmcloud ks 命令设置入口子域:
      export INGRESS_SUBDOMAIN=$(ibmcloud ks cluster get --cluster $MYCLUSTER --output json | jq -r 'try(.ingressHostname) // .ingress.hostname')
      
    3. 使用 ibmcloud ks 命令设置入口密钥:
      export INGRESS_SECRET=$(ibmcloud ks cluster get --cluster $MYCLUSTER --output json | jq -r 'try(.ingressSecretName) // .ingress.secretName')
      
    4. 将映像存储库名称设置为预先构建的映像 icr.io/solution-tutorials/tutorial-cloud-e2e-security:
      export IMAGE_REPOSITORY=icr.io/solution-tutorials/tutorial-cloud-e2e-security
      
    5. 通过替换缺省值来设置其他环境变量:
      export BASENAME=secure-file-storage
      
    6. 设置要使用的名称空间:
      export TARGET_NAMESPACE=default
      
    7. (可选) 仅当您对映像使用的另一个 Kubernetes 名称空间而不是 default 名称空间和 IBM Cloud Container Registry 时,才设置 $IMAGE_PULL_SECRET 环境变量。 这需要额外的 Kubernetes 配置(例如,在新的命名空间中创建容器注册表密钥 )。
  3. 运行以下命令以生成 secure-file-storage.yamlsecure-file-storage-ingress.yaml。 它将使用刚刚与模板文件 secure-file-storage.template.yamlsecure-file-storage-ingress.template.yaml 一起配置的环境变量。

    ./generate_yaml.sh
    

    例如,假设应用程序部署在默认的 Kubernetes 命名空间中:

    脚本使用的环境变量
    变量 描述
    $IMAGE_PULL_SECRET 使用提供的图像时不定义 用于访问注册表的私钥。
    $IMAGE_REPOSITORY icr.io/solution-tutorials/tutorial-cloud-e2e-securityicr.io/namespace/image-name 基于上一节中的URL、命名空间和图像名称的已构建图像的URL。
    $TARGET_NAMESPACE 缺省值 将在其中推送应用程序的 Kubernetes 名称空间。
    $INGRESS_SUBDOMAIN secure-file-stora-123456.us-south.containers.appdomain.cloud 从集群概览页面或通过 ibmcloud ks cluster get --cluster <your-cluster-name> 获取。
    $INGRESS_SECRET secure-file-stora-123456 使用 ibmcloud ks cluster get --cluster <your-cluster-name> 进行检索。
    $BASENAME secure-file-storage 用于标识资源的前缀。
  4. credentials.template.env 复制到 credentials.env

    cp credentials.template.env credentials.env
    
  5. 编辑 credentials.env,并使用以下值填写空白设置:

    • Object Storage 服务区域端点,存储区名称,为 Object Storage 服务创建的凭证,
    • 安全文件存储云存储的证书
    • 以及 App ID的凭证。 变量 appid_redirect_uris 是上面讨论的重定向 URI 的逗号分隔列表。

    使用 Cloud Shell时,可以使用 nano credentials.env 来编辑文件。

部署到集群

  1. 获取对集群的访问权,如 通过 CLI 连接 指示信息中所述,可从控制台概述页面中的 操作 ... 菜单访问。
    ibmcloud ks cluster config --cluster $MYCLUSTER --admin
    
  2. 请检查 Ingress 私钥在目标名称空间中是否可用。 如果没有,您需要创建它。
    ibmcloud ks ingress secret ls -c $MYCLUSTER
    
    如果 Ingress 私钥具有 CRN,请使用其名称和 CRN 在目标名称空间中创建私钥:
    ibmcloud ks ingress secret create -c $MYCLUSTER -n $TARGET_NAMESPACE --cert-crn <crn-shown-in-the-output-above> --name <secret-name-shown-above>
    
    如果 Ingress 私钥没有 CRN,请使用以下命令在目标名称空间中重新创建该私钥:
    kubectl get secret $INGRESS_SECRET --namespace=ibm-cert-store -oyaml | grep -v '^\s*namespace:\s'| kubectl apply  --namespace=$TARGET_NAMESPACE -f -
    
  3. 创建应用程序用于获取服务凭证的私钥:
    kubectl create secret generic secure-file-storage-credentials --from-env-file=credentials.env
    
  4. 部署应用程序。
    kubectl apply -f secure-file-storage.yaml
    
  5. 为应用程序部署网络路由 ( ClusterIP 服务和 Ingress),以使其可从公共因特网访问。
    kubectl apply -f secure-file-storage-ingress.yaml
    

测试应用程序

申请可通过 https://secure-file-storage.<your-cluster-ingress-subdomain>/ 进行。

  1. 转至应用程序的主页。 这会将您重定向到 App ID 缺省登录页面。
  2. 使用有效电子邮件地址注册新帐户。
  3. 等待收件箱收到用于验证帐户的电子邮件。
  4. 登录。
  5. 选择要上传的文件。 单击上传
  6. 对文件使用共享操作,以生成预签名 URL,此 URL 可以与要访问该文件的其他人共享。 链接设置为在 5 分钟后到期。

已认证的用户有自己的空间可存储文件。 虽然他们无法查看彼此的文件,但可以生成预签名 URL 来授予对特定文件的临时访问权。

您可以在 源代码库中找到有关该应用程序的更多详细信息。

查看安全性事件

既然已成功部署应用程序及其服务,现在可以查看该过程生成的安全性事件。 所有事件都在 IBM Cloud Logs 实例中集中提供。

  1. Observability 面板,选择“云日志”选项卡,找到正在接收审计事件的IBM Cloud Logs实例,然后单击“打开面板”。
  2. 查看供应资源以及与资源交互时,发送到服务的所有日志。

可选:使用定制域并加密网络流量

默认情况下,可通过 containers.appdomain.cloud 的通用子域访问该应用程序。 但是,也可以将定制域用于部署的应用程序。 要持续支持 https,需要提供对加密网络流量的访问权(通过所需主机名的证书或通配符证书)。 可以使用各种服务组合来管理 DNS 名称和 TLS 证书,以便集成到 Kubernetes 应用程序中。 本教程将使用以下服务:

  • 您自己的定制 DNS 域的 DNS 子域 secure-file-storage,由 IBM Cloud Internet Services (CIS) 服务管理。 为了简化本教程中的步骤,我们将使用 example.com 作为定制 DNS 域的名称,确保在所有步骤中替换为定制 DNS 域。
  • 让我们加密 以生成 TLS 证书。
  • IBM Cloud Secrets Manager 以与 Let 's Encrypt 集成,从而为 secure-file-storage.example.com 生成 TLS 证书并将其安全存储。
  • Kubernetes 外部私钥操作程序,用于直接从 Secrets Manager 中提取私钥 TLS 证书

您还可以创建指向 DNS 提供程序上的应用程序 URI 的 CNAME,生成 TLS 证书并将其组件导入到 Secrets Manager中,而不是执行以下步骤。

提供 CIS 和 Secrets Manager 实例

  • 需要 IBM Cloud Internet Services 实例。 使用现有实例或从此 目录条目 创建一个实例。 提供了一些定价套餐,包括免费试用。 新的 CIS 的供应过程将说明如何配置现有 DNS 注册器 (可能不在 IBM Cloud中) 以使用 CIS提供的域名服务器。 在 shell 窗口中导出定制域:
    export MYDOMAIN=example.com
    
  • 请填写 Secrets Manager。 使用现有实例或创建 创建 Secrets Manager 服务实例 中描述的新实例。 如果创建新实例,请将其命名为 secure-file-storage-sm。 您可以通过与先前创建的 Key Protect 实例集成来增强静态密钥的安全性。

使用 Kubernetes 集群 Ingress 子域 作为别名,在 CIS 实例中创建 DNS 条目。

  1. 打开 CIS 服务实例,可以在 资源列表 中找到该服务实例。
  2. 单击左侧的 可靠性 选项卡。
  3. 点击顶部的 DNS选项卡
  4. 向下滚动到“DNS 记录”部分,然后单击 添加 以创建新记录:
    1. 类型: CNAME
    2. 名称: secure-file-storage
    3. 别名: 集群的 Ingress 子域。 可以通过执行以下命令在 shell 中获取正确的值:
      echo $INGRESS_SUBDOMAIN
      
    4. 单击 添加 以添加新记录。

将 Secrets Manager 实例连接到 Let 's Encrypt。

  1. 需要 Let 's Encrypt ACME 帐户和关联的 .pem 文件。 使用现有一个或 创建一个:

    1. 安装 acme-account-build-tool创建 Let 's Encrypt ACME 帐户 包含指示信息和指向创建工具的链接。
    2. 运行 acme-account-create-tool 以专门为此安全文件存储器示例创建帐户。 下面是一个示例:
      $ ./acme-account-creation-tool-darwin-amd64 -e YOUREMAIL -o secure-file-storage.example.com -d letsencrypt-prod
      INFO[2022-12-28T13:30:00-08:00] Registering a new account with the CA
      INFO[2022-12-28T13:30:00-08:00] Account information written to file : secure-file-storage.example.com-account-info.json
      INFO[2022-12-28T13:30:00-08:00] Private key written to file : secure-file-storage.example.com-private-key.pem
      
      Account Info
      {
         "email": "YOUREMAIL",
         "registration_uri": "https://acme-v02.api.letsencrypt.org/acme/acct/891897087",
         "registration_body": {
            "status": "valid",
            "contact": [
               "mailto:YOUREMAIL"
            ]
         }
      }%
      $ ls
      secure-file-storage.example.com-account-info.json secure-file-storage.example.com-private-key.pem
      
  2. 将 Let 's Encrypt ACME 帐户连接到 Secrets Manager 实例。 有关更多详细信息,请参阅 在 UI 中添加认证中心配置:

    1. 打开 Secrets Manager 服务实例,可以在 资源列表 中找到该服务实例。
    2. 打开左侧的 密钥引擎,然后单击 公用证书
    3. 在“认证中心”下,单击 添加
    4. 名称: LetsEncrypt 和 认证中心: Let 's Encrypt。
    5. 选择文件 下,单击 添加文件,然后从选择器中选择 secure-file-storage.example.com-private-key.pem 或现有 .pem 文件。
    6. 单击添加
  3. 将 CIS 作为 DNS 提供者连接:

    1. 在“DNS 提供程序”下,单击 添加
    2. 名称 顺从下拉列表中选择 Cloud Internet Services
    3. 单击下一步
    4. 授权 选项卡中,选择 CIS 实例。
    5. 单击添加
  4. 在 Secrets Manager 中订购证书

    1. 打开 Secrets Manager 服务,然后选择左侧的 密钥
    2. 单击添加
    3. 单击 公用证书,然后单击 下一步
    4. 填写以下表单:
      • 名称-输入您可以记住的名称。
      • 描述-输入您选择的描述。
      • 点击下一步
      • 认证中心 下,选择已配置的 Let 's Encrypt 认证中心引擎。
      • 密钥算法下,选择首选算法,
      • 捆绑软件证书-关闭
      • 自动证书旋转-离开
      • DNS 提供者 下,选择已配置的 DNS 提供者实例
      • 单击 选择域 将选中 使用通配符进行选择,并使域本身处于未选中状态,然后单击 完成
    5. 单击下一步
    6. 复审您的选择,然后单击 添加
    7. 单击活动私钥的三个垂直点菜单,然后选择 详细信息 并从对话框复制 CRN。 导出 shell 中的值。 大致如下:
      export PUBLIC_CERT_CRN=crn:v1:bluemix:public:secrets-manager:eu-de:a/abc123abc123abc123abc123:99999999-9999-9999-9999-999999999999:secret:aaaaaaaa-9999-9999-aaaa-123456781234
      
  5. 本教程利用服务授权来授予集群对 Secrets Manager 服务实例及其受管私钥的访问权。

    1. 转至 "IAM 授权" 页面,然后单击 创建 以添加新授权。
    2. 下,选择 Kubernetes Service,然后单击以选取 特定资源。 然后,对于 源服务实例,选择集群。
    3. 目标 下,选择 Secrets Manager,然后继续使用 特定资源实例标识,选择 Secrets Manager 服务实例。
    4. 最后,在 角色 下,选择 管理器,然后通过单击 授权来授予授权。
  6. 验证是否已将 MYDOMAIN 和 PUBLIC CERT_CRN 的值导出到环境中:

    echo MYDOMAIN $(printenv MYDOMAIN)
    echo PUBLIC_CERT_CRN $(printenv PUBLIC_CERT_CRN)
    
  7. 从新的 TLS 证书创建 Ingress 私钥。

    ibmcloud ks ingress secret create --name secure-file-storage-certificate --cluster $MYCLUSTER --cert-crn $PUBLIC_CERT_CRN --namespace $TARGET_NAMESPACE
    
  8. 运行以下命令以生成配置文件的新副本。 它将使用您与模板文件 secure-file-storage.template.yamlsecure-file-storage.template-ingress.yaml 一起配置的所有环境变量。 您可能希望首先保存当前版本:

    cp secure-file-storage.yaml /tmp
    cp secure-file-storage-ingress.yaml /tmp
    
    ./generate_yaml.sh
    
  9. 将配置更改应用到您的仪表盘:

    kubectl apply -f secure-file-storage-ingress.yaml
    
  10. 切换回浏览器。 在 IBM Cloud 资源列表中,找到先前创建并配置的 App ID 服务,然后启动其管理仪表板。

  • 单击左侧的 管理认证 和顶部的 认证设置 选项卡。
  • 添加网站重定向URL 表单中,将 https://secure-file-storage.example.com/redirect_uri 添加为另一个 URL。
  1. 现在,一切应该都已就位。 请访问您配置的自定义域名 https://secure-file-storage.<your custom domain>,测试应用程序。

安全性:轮换服务凭证

为了维护安全性,应定期更换(轮换)服务凭证、密码和其他密钥。 许多安全策略要求每 90 天(或以类似频率)更改一次密码和凭证。 此外,如果员工离开团队或发生(可疑的)安全事件,那么应该立即更改访问特权。

在本教程中,服务被用于不同的目的,从存储文件和元数据到保护应用程序访问权限,再到管理容器镜像。 轮换服务凭证通常涉及以下操作:

  • 重命名现有服务密钥,
  • 使用先前使用的名称创建一组新的凭证,
  • 替换现有 Kubernetes 私钥中的访问数据并应用更改,
  • 以及在验证后,通过删除旧的服务密钥来停用旧凭证。

扩展教程

安全永无止境。 请尝试以下建议来增强应用程序的安全性。

共享资源

如果要与其他人一起使用此解决方案教程的资源,那么可以共享所有组件或仅共享部分组件。IBM Cloud Identity and Access Management(IAM) 支持用户和服务标识的认证以及对云资源的访问控制。 要授予对资源的访问权,可以将 预定义访问角色 分配给用户,服务标识或 访问组。 可以创建访问组以将一组用户和服务标识组织到单个实体中。 这使您可以轻松地分配访问权。 您可以将单个策略分配给该组,而不用对每个用户或服务标识多次分配相同的访问权。 因此,您可以针对开发项目上的角色组织组,并调整安全性和项目管理。

您可以在此处找到有关各个服务及其可用 IAM 访问角色的信息:

要开始使用,请查看 访问权管理的最佳实践以及如何定义访问组

除去资源

要除去资源,请删除部署的容器,然后删除供应的服务。

如果您与其他用户共享帐户,请始终确保仅删除您自己的资源。

  1. 删除已部署的网络配置和容器:

    kubectl delete -f secure-file-storage-ingress.yaml
    

    然后运行以下命令:

    kubectl delete -f secure-file-storage.yaml
    
  2. 删除用于部署的私钥:

    kubectl delete secret secure-file-storage-credentials
    
  3. 如果已利用 Secrets Manager,请 除去相关服务以进行服务授权

  4. IBM Cloud 资源列表中,找到为此教程创建的资源。 使用搜索框和 secure-file-storage 作为模式。 通过单击每个服务旁边的上下文菜单,并选择删除服务来删除每个服务。 请注意,Key Protect 服务只有在删除密钥后才能除去。 单击该服务实例以访问相关仪表板并删除密钥。

根据资源的不同,可能不会立即将其删除,但会保留 (缺省情况下为 7 天)。 您可以通过永久删除该资源或在保留期内将其复原来回收该资源。 请参阅本文档,以了解如何 使用资源回收

相关内容