OPA适配华为云&OBS心得
前一阵,在网上闲逛时,偶然发现华为云发布一些列的对接华为云的任务(https://developer.huaweicloud.com/programs/opensource/contributing/)。在任务中,我找了一个比较简单的任务入手。那就是OPA适配OBS开源验证任务。
1 任务流程
1.1 任务的目的
本任务的主要目的是让OPA支持华为云OBS服务,OPA 与华为云的 OBS(对象存储服务)集成,以实现对 OBS 资源的安全性、合规性和访问控制策略的管理,拓展OBS服务的影响力。方便OPA的用户使用华为云服务时能够顺利对接OBS服务。
1.2 报名流程
- 在喜欢的任务上进行报名,填写自己的申请,留下自己的邮箱,之后华为官方会发送任务计划书到邮箱内。
- 开通开发者空间,进行实名认证,加入沃土云创计划个人方向。
- 进入激励管理》开源共创,进入任务,此时在需求分析节点,提交之前发送到邮箱内的任务计划书。
- 提交任务计划书之后,审批后进入开发阶段,阅读任务计划书,了解需要开发的内容。
- 此时需要申领服务器,主要是Gaussdb,华为云CCE(类似k8s),CodeArts(ci/cd)。
- 开发完整之后,在CCE上进行验证,在CodeArts上进行部署。
- 测试完成后,可以申请任务验收。将自己的代码分支博文等信息打包成zip文件进行上传。
- 后面就是等发钱啦。
1.3 开发代码
不涉及
1.4 上云第一步-购买OBS
- 在华为云官网,点击产品,选择对象存储服务OBS,点击购买
- 选择以下选项,进行提交
区域:广州(选离自己最近的城市)
资源包类型:标准存储多AZ包
规格:按照自己需要的大小(我选的是40G)
1.5 上云第二步-购买ECS
- 选择以下选项,进行提交
区域:广州(选离自己最近的城市)
计费模式:按需计费
可用区:随机分配
CPU架构:鲲鹏计算 鲲鹏通用计算增强型
选个差不多配置的就行了(我选的是 kc1.xlarge.4 | 4vCPUs | 16GiB)
操作系统:公共镜像 Huawei Cloud EulerOS (Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB))
存储和备份按默认就行
1.6 新建节点
不涉及
1.7 配置CodeArts
不涉及
2 验收材料
1. 开源软件fork地址:
不涉及
2. 开源软件修改记录(可以有多个修改记录):
不涉及
3. 推送上游社区PR(包括代码、文档、可以有多个):
不涉及
4. 验证DEMO地址:
https://gitcode.com/moseszane168/opensource-demo-opa-for-obs-241212/overview
5. 验证DEMO修改记录(可以有多个修改记录,只包含和本任务验证强相关的提交记录,比如添加依赖、增加配置文件、演示开源软件功能使用的代码等):
不涉及
6. 博客地址:https://bbs.huaweicloud.com/blogs/442244
3 资源清单
3.1 ECS
产品名称 |
CPU架构 |
实例类型 |
公共镜像 |
镜像版本 |
弹性云服务器 |
鲲鹏计算 |
鲲鹏通用计算增强型 |
Huawei Cloud EulerOS |
Huawei Cloud EulerOS 2.0标准版 64位 ARM版(10GiB) |
3.2 OBS
产品名称 |
资源包类型 |
桶类别 |
对象存储服务OBS |
存储包 |
标准存储多AZ包 |
4 测试结果
4.1 安装OPA
安装:curl -L -o opa https://openpolicyagent.org/downloads/v0.70.0/opa_linux_amd64_static
chmod +x opa
sudo mv opa /usr/local/bin/opa
验证安装:opa version
4.2 编写 OPA 策略
OPA 使用 Rego 语言编写策略。以下是一个简单的示例,展示如何编写策略来限制对 OBS 存储桶的访问。
示例:限制对 OBS 存储桶的访问
假设我们有一个 OBS 存储桶 my-bucket,我们希望限制只有特定的用户或服务可以访问它。
vim obs_policy.rego
package huaweicloud.obs # import rego.v1 default allow := false # 定义允许访问的用户列表 allowed_users := {"hid_gwf9am1pd-co2r6"} # 定义策略:检查请求的用户是否在允许列表中 allow { input.bucket == "opatest" allowed_user := allowed_users[_] input.user == allowed_user } |
解释:
- package huaweicloud.obs:定义策略的命名空间。
- allowed_users:定义允许访问的用户列表。
- allow:定义一个规则,当请求的用户在允许列表中时,策略返回 true。
input_true.json
{ "bucket": "opatest", "user": "hid_gwf9am1pd-co2r6" } |
input_false.json
{ "bucket": "opatest", "user": "user1" } |
4.3 OBS桶策略设置
登录华为云控制台。
进入 OBS 服务,选择目标存储桶(如 opatest)。
在存储桶的“权限控制”中,选择“桶策略”。
按照下图选择后提交
4.4 测试 OPA 策略
测试通过的请求:
opa eval --data obs_policy.rego --input input_true.json "data.huaweicloud.obs.allow"
测试失败的请求:
opa eval --data obs_policy.rego --input input_false.json "data.huaweicloud.obs.allow"
- 点赞
- 收藏
- 关注作者
评论(0)