【ORACLE云】通过 OCI OKE && OCIR 构建签名镜像 - 保证 CI CD 镜像一致性_oci镜像构建

OCI Vault(Oracle Cloud Infrastructure Vault)

OCI Vault(Oracle Cloud Infrastructure Vault)是 Oracle 云基础设施提供的一项安全服务,用于管理和保护密钥、密码、证书等敏感信息。Vault 提供了安全的存储和访问这些加密数据的方式,并且支持密钥的生成、存储和轮换,以提高数据的安全性。

1 背景

用户出于合规和安全等原因,管理员希望我们在生产环境部署应用符合如下安全需求:

  • 应用镜像来自被信任的源地址(这里指镜像仓库)
  • 应用镜像在部署过程中的唯一性

2 应用场景

通常安全类操作会通过程序集成到开发、测试和生产环境的部署流水线中,通过钩子或者定时扫描的方式进行签名,签名是一个自动完成的过程;本文主要介绍Sign部分内容,即容器签名。

在部署中通常构建镜像的流程:

  • 在CI/CD服务器上进行容器的构建
  • 对构建成功的容器打上对应的标签
  • 通过 OCI Vault 为容器增加签名
  • OKE拉取签名镜像(此时OKE已打开镜像签名校验)

构建CI/CD流程如下:

签名校验流程:

在流程图中,虚拟机(VM)作为流程的发起者,更多地代表了 CI/CD 服务平台。示例中重点介绍了镜像签名和镜像部署的操作,在生产环境中,CI/CD 过程的负载远比示例中所展示的更加庞大。本文的目的在于提供有关与 CI/CD 操作的过程,而并非详细介绍自动化标准。

3 前提准备

3.1 Vault创建

Oracle Cloud Infrastructure Vault 是一项密钥管理服务,用于存储和管理主加密密钥和机密以安全访问资源。**在镜像签名场景中,主要用于为容器镜像增加签名和OKE镜像通过签名验证容器镜像的一致性。**

3.1.1 创建Vault

3.1.2 创建主加密密钥

目前镜像支持RSA和ECDSA两种加密算法。

3.2 OKE镜像签名验证所需IAM策略

OKE需要可以读取镜像仓库和使用Key的权限,注意:此权限目前仅支持租户级权限

Allow any-user to use keys in tenancy where request.user.id=<CLUSTER_OCID> # OKE集群OCID
Allow any-user to read repos in tenancy where request.user.id=<CLUSTER_OCID> # OKE集群OCID

4 开启OKE 镜像签名验证功能

4.1 创建OKE时开启镜像签名验证功能

  1. 展开”隐藏高级选项”
  2. 勾选”在此集群上启用映像验证策略”
  3. 选择使用的KEY信息

5 构建镜像与发布

5.1 编写测试dockerfile

测试镜像,用于构建nginx镜像:

FROM centos:7.9.2009
RUN buildDeps=‘readline-devel pcre-devel openssl-devel gcc telnet wget curl make’
&& useradd -M -s /sbin/nologin nginx
&& mkdir -p /usr/local/nginx/conf/vhost
&& mkdir -p /data/logs/nginx
&& yum -y install $buildDeps
&& yum clean all
&& wget http://nginx.org/download/nginx-1.14.2.tar.gz
&& tar zxf nginx-1.14.2.tar.gz
&& cd nginx-1.14.2
&& ./configure --prefix=/usr/local/nginx
–with-http_ssl_module
–with-http_stub_status_module
&& make -j 1 && make install
&& rm -rf /usr/local/nginx/html/*
&& echo “ok” >> /usr/local/nginx/html/status.html
&& cd / && rm -rf nginx-1.14.2*
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH /usr/local/nginx/sbin:$PATH
WORKDIR /usr/local/nginx
EXPOSE 80
CMD [“nginx”, “-g”, “daemon off;”]

5.2 登录镜像仓库

用户名有两种:

- 普通IAM用户格式:/

- 联邦用户格式: /oracleidentitycloudservice/

password为认证token

#1. 登录镜像仓库
$root > docker login ap-tokyo-1.ocir.io
username: xxx/oracleidentitycloudservice/xx.xxx@oracle.com
password:

5.3 构建镜像

构建镜像

镜像标签的组合为//

docker build -t ap-tokyo-1.ocir.io/xxxxxx/dev-app:v1 -f DockerFile

查看当前构建的镜像,标注背景色的镜像为我们要推送至仓库的镜像, xxxxxx 为客户账号的镜像仓库所在namespace

[root@instance-20221212-1501 ~]# docker images
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
REPOSITORY TAG IMAGE ID CREATED SIZE
ap-tokyo-1.ocir.io/xxxxxx/dev-app v1 3bb00c0e9770 35 seconds ago 328 MB
quay.io/centos/centos 7.9.2009 8652b9f0cb4c 2 years ago 212 MB

5.4 推送镜像至OCIR镜像仓库

推送成功后在镜像仓库中可以看到刚刚发布的v1版本镜像

推送镜像至仓库, xxxxxx 为客户账号的镜像仓库所在namespace

docker push ap-tokyo-1.ocir.io/xxxxxx/dev-app:v1

6 镜像签名

容器签名操作在每次镜像发布后进行,通过容器数字ID与主密钥生成一致性信息,保证容器的完整性。

6.1 获取容器ID

6.1.1通过console界面获取

6.1.2 通过 OCI Cli 命令行获取

注意:在使用 OCI Cli 命令行前需要添加用户认证

oci artifacts container image list --compartment-id
{
“data”: {
“items”: [
{
“compartment-id”: “ocid1.compartment.oc1x”,
“digest”: “sha256:e7a4c186eef137a75caacae308765dc2fbb2f57c36d95c0b3ccf6efe6d912ec1”,
“display-name”: “dev-app:v1”,
“id”: “ocid1.containerimage.oc1.ap-tokyo-1.0.cnstphowy3cb.aaaaaaaakzn4quqonn7wrkys5o4ms7h6yykzkm5raggd7iwoetopyolptneq”,
“lifecycle-state”: “AVAILABLE”,
“repository-id”: “ocid1.containerrepo.oc1.ap-tokyo-1.0.cnstphowy3cb.aaaaaaaao5wmjdfjd7v6ivy4h4ckzquww3a7famuymokimr2n7tip54qcdsq”,
“repository-name”: “dev-app”,
“time-created”: “2022-12-12T10:13:24.550000+00:00”,
“version”: “v1”
}
],
“remaining-items-count”: 0
}
}

6.2 获取KEY信息

签名时需要使用密钥OCI和密钥版本

6.2.1 通过console界面获取

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

vert/acb3c4714e29498573a58a3c79c775da.gif#pic_center)

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-vdckGbWR-1712758312007)]

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值