金鱼哥RHCA回忆录:DO280OpenShift访问控制--加密和ConfigMap

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 第五章 DO280OpenShift访问控制--加密和ConfigMap
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


📜管理加密信息

📑secret特性

Secret对象类型提供了一种机制来保存敏感信息,如密码、OCP客户端配置文件、Docker配置文件和私有仓库凭据。Secrets将敏感内容与Pod解耦。可以使用Volume插件将Secrets挂载到容器上,或者系统可以使用Secrets代表pod执行操作。

Secrets的主要特征包括:

  • Secrets data可以独立于其定义引用。
  • Secrets data Volume由临时文件存储支持。
  • 可以在名称空间中共享Secrets data。

📑创建Secrets

在依赖于该Secrets的pod之前创建一个Secrets。

[user@demo ~]$ oc create secret generic secret_name \
--from-literal=key1=secret1 \
--from-literal=key2=secret2    #用secret data创建secret对象
[user@demo ~]$ oc secrets add --for=mount serviceaccount/serviceaccount-name \
secret/secret_name        #更新pod的服务帐户,允许引用该secrets。

例如,允许一个运行在指定服务帐户下的pod挂载一个secrets

创建一个pod,该pod使用环境变量或数据卷作为文件的方式使用该secret,通常使用模板完成。


📑使用secret暴露Pod

secrets可以作为数据卷挂载,也可以作为环境变量以便供pod中的容器使用。

例如,要向pod公开一个secrets,首先创建一个secrets并将username和password以k/v形式配置,然后将键名分配给pod的YAML文件env定义。

示例:创建名为demo-secret的secrets,它定义用户名和密码为username/demo-user。

[user@demo ~]$ oc create secret generic demo-secret \
--from-literal=username=demo-user

要使用前面的secret作为MySQL数据库pod的数据库管理员密码,请定义环境变量,并引用secret名称和密码。

env:
  - name: MYSQL_ROOT_PASSWORD
    valueFrom:
      secretKeyRef:
       key: username
       name: demo-secret

📑web端管理secret

从web控制台管理secret:

  1. 以授权用户身份登录到web控制台。
  2. 创建或选择一个项目来承载secret。
  3. 导航到resource——>secrets。

在这里插入图片描述


📑Secret使用场景

  • password和user names

敏感信息(如password和user name)可以存储在一个secret中,该secret被挂载为容器中的数据卷。数据显示为位于容器的数据卷目录中的文件中的内容。然后,应用程序(如数据库)可以使用这些secret对用户进行身份验证。


  • 传输层安全性(TLS)和密钥对

通过让集群将签名证书和密钥对生成到项目名称空间中的secret中,可以实现对服务的通信的保护。证书和密钥对使用PEM格式存储以类似tls.crt和tls.key的格式存储在secret的pod中。


📜ConfigMap对象

📑ConfigMap概述

ConfigMaps对象类似于secret,但其设计目的是支持处理不包含敏感信息的字符串。ConfigMap对象持有配置数据的键值对,这些配置数据可以在pods中使用,或者用于存储系统组件(如控制器)的配置数据。

ConfigMap对象提供了将配置数据注入容器的机制。ConfigMap存储精细的粒度信息,比如单个属性,或者详细信息,比如整个配置文件或JSON 集合。


📑CLI创建ConfigMap

可以使用--from-literal选项从CLI创建ConfigMap对象。

示例:创建一个ConfigMap对象,该对象将IP地址172.20.30.40分配给名为serverAddress的ConfigMap密钥。

[user@demo ~]$ oc create configmap special-config \
--from-literal=serverAddress=172.20.30.40
[user@demo ~]$ oc get configmaps special-config -o yaml        #查看configMap
apiVersion: v1
data:
  key1: serverAddress=172.20.30.40
kind: ConfigMap
metadata:
  creationTimestamp: 2017-07-10T17:13:31Z
  name: special-config
……

在配置映射的pod定义中填充环境变量APISERVER。

env:
  - name: APISERVER
      valueFrom:    
        configMapKeyRef:
          name: special-config
          key: serverAddress

📑web管理ConfigMap

从web控制台管理ConfigMap对象:

  1. 以授权用户身份登录到web控制台。
  2. 创建或选择一个项目来承载ConfigMap。
  3. 导航到资源→配置映射。

在这里插入图片描述


📜课本练习

📑环境准备

[student@workstation ~]$ lab install-prepare setup
[student@workstation ~]$ cd /home/student/do280-ansible
[student@workstation do280-ansible]$ ./install.sh

提示:若已经拥有一个完整环境,可不执行。


📑本练习准备

[student@workstation ~]$ lab secure-secrets setup

📑创建项目

[student@workstation ~]$ oc login -u developer -p redhat https://master.lab.example.com
[student@workstation ~]$ oc new-project secure-secrets
[student@workstation ~]$ cd /home/student/DO280/labs/secure-secrets/
[student@workstation secure-secrets]$ cat mysql-ephemeral.yml
…………
      spec:
        containers:
        - capabilities: {}
          env:
          - name: MYSQL_USER
            valueFrom:
              secretKeyRef:
                key: database-user
                name: ${DATABASE_SERVICE_NAME}
          - name: MYSQL_PASSWORD
            valueFrom:
              secretKeyRef:
                key: database-password
                name: ${DATABASE_SERVICE_NAME}
          - name: MYSQL_ROOT_PASSWORD
            valueFrom:
              secretKeyRef:
                key: database-root-password
                name: ${DATABASE_SERVICE_NAME}
          - name: MYSQL_DATABASE
            value: ${MYSQL_DATABASE}
…………
- description: The name of the OpenShift Service exposed for the database.
  displayName: Database Service Name
  name: DATABASE_SERVICE_NAME
  required: true
  value: mysql
…………

模板解读:

该mysql-ephemeral.yml模板文件,包含openshift项目中的mysql临时模板,pod所需的其他环境变量由模板参数初始化,并具有默认值。

但没有secret定义,后续操作将手动创建模板所需的secret。

根据模板的要求,创建一个包含MySQL容器image使用的凭证的secret,将这个secret命名为mysql。

  • 应用程序访问的数据库用户名由database-user定义。
  • 数据库用户的密码由database-password定义。
  • 数据库管理员密码由database-root-password定义

📑创建secret

[student@workstation secure-secrets]$ oc create secret generic mysql \
--from-literal='database-user'='mysql' \
--from-literal='database-password'='redhat' \
--from-literal='database-root-password'='do280-admin'
secret "mysql" created


[student@workstation secure-secrets]$ oc get secret mysql -o yaml    #确认secret
apiVersion: v1
data:
  database-password: cmVkaGF0
  database-root-password: ZG8yODAtYWRtaW4=
  database-user: bXlzcWw=
kind: Secret
metadata:
  creationTimestamp: 2021-03-03T03:40:47Z
  name: mysql
  namespace: secure-secrets
  resourceVersion: "218611"
  selfLink: /api/v1/namespaces/secure-secrets/secrets/mysql
  uid: 3df1014e-7bd2-11eb-9656-52540000fa0a
type: Opaque

📑创建应用

[student@workstation secure-secrets]$ oc new-app --file=mysql-ephemeral.yml
[student@workstation secure-secrets]$ oc get pods
NAME             READY     STATUS              RESTARTS   AGE
mysql-1-deploy   1/1       Running             0          11s
mysql-1-r5rgn    0/1       ContainerCreating   0          8s
[student@workstation secure-secrets]$ oc get pods
NAME            READY     STATUS    RESTARTS   AGE
mysql-1-r5rgn   1/1       Running   0          12s

📑端口转发

[student@workstation secure-secrets]$ cd
[student@workstation ~]$ oc port-forward mysql-1-r5rgn 3306:3306
Forwarding from 127.0.0.1:3306 -> 3306

提示:验证完成之前forward不要关闭。


📑确认验证

[student@workstation ~]$ mysql -uroot -pdo280-admin -h127.0.0.1   #新开终端测试MySQL
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sampledb           |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

MySQL [(none)]>

📑清除实验

[student@workstation ~]$ oc delete project secure-secrets

💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第五章 DO280OpenShift访问控制--加密和ConfigMap 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
运维 安全 持续交付
金鱼哥戏说RHCE认证:管理变量和事实--管理加密
第四章 管理变量和事实----管理加密
123 0
金鱼哥戏说RHCE认证:管理变量和事实--管理加密
|
运维 安全 关系型数据库
金鱼哥RHCA回忆录:DO280OpenShift访问控制--security policy和章节实验
第五章 DO280OpenShift访问控制--security policy和章节实验
193 0
金鱼哥RHCA回忆录:DO280OpenShift访问控制--security policy和章节实验
|
存储 运维 Kubernetes
金鱼哥RHCA回忆录:DO280OpenShift访问控制--管理项目和账户
第五章 DO280OpenShift访问控制--管理项目和账户
269 0
金鱼哥RHCA回忆录:DO280OpenShift访问控制--管理项目和账户
|
17天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的知识,并提供一些实用的技巧和建议,帮助读者更好地保护自己的网络安全和信息安全。
|
6天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
7天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
27 10
|
9天前
|
SQL 安全 网络安全
网络安全漏洞、加密技术与安全意识的知识分享
随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞的概念、类型和防范措施,以及加密技术的原理和应用。同时,强调提高个人和企业的安全意识对于防范网络攻击的重要性。
|
8天前
|
存储 安全 网络安全
网络安全的盾与剑:漏洞防御与加密技术的实战应用
在数字化浪潮中,网络安全成为保护信息资产的重中之重。本文将深入探讨网络安全的两个关键领域——安全漏洞的防御策略和加密技术的应用,通过具体案例分析常见的安全威胁,并提供实用的防护措施。同时,我们将展示如何利用Python编程语言实现简单的加密算法,增强读者的安全意识和技术能力。文章旨在为非专业读者提供一扇了解网络安全复杂世界的窗口,以及为专业人士提供可立即投入使用的技术参考。
|
10天前
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。
|
11天前
|
存储 安全 算法
揭秘网络安全的盾牌与矛:漏洞防护与加密技术的较量
在数字化时代的棋局中,网络安全是每个参与者必须面对的挑战。本文将深入探讨网络安全中的两个关键角色——漏洞与加密技术。通过分析最新的安全漏洞案例,我们揭示网络攻击者如何利用这些漏洞进行破坏。同时,我们将展示加密技术如何成为保护数据不被窃取的强大盾牌。文章还将讨论提升个人和企业的安全意识的重要性,并通过实际的代码示例,展示如何在实践中应用这些知识来加强我们的网络防线。