OPA适配华为云&OBS心得

举报
yd_235395946 发表于 2024/12/12 16:07:47 2024/12/12
【摘要】 本任务的主要目的是让OPA支持华为云OBS服务,OPA 与华为云的 OBS(对象存储服务)集成,以实现对 OBS 资源的安全性、合规性和访问控制策略的管理,拓展OBS服务的影响力。方便OPA的用户使用华为云服务时能够顺利对接OBS服务。

前一阵,在网上闲逛时,偶然发现华为云发布一些列的对接华为云的任务(https://developer.huaweicloud.com/programs/opensource/contributing/)。在任务中,我找了一个比较简单的任务入手。那就是OPA适配OBS开源验证任务。

1 任务流程

1.1 任务的目的

本任务的主要目的是让OPA支持华为云OBS服务,OPA 与华为云的 OBS(对象存储服务)集成,以实现对 OBS 资源的安全性、合规性和访问控制策略的管理,拓展OBS服务的影响力。方便OPA的用户使用华为云服务时能够顺利对接OBS服务。

1.2 报名流程

  1. 在喜欢的任务上进行报名,填写自己的申请,留下自己的邮箱,之后华为官方会发送任务计划书到邮箱内。
  2. 开通开发者空间,进行实名认证,加入沃土云创计划个人方向。
  3. 进入激励管理》开源共创,进入任务,此时在需求分析节点,提交之前发送到邮箱内的任务计划书。
  4. 提交任务计划书之后,审批后进入开发阶段,阅读任务计划书,了解需要开发的内容。
  5. 此时需要申领服务器,主要是Gaussdb,华为云CCE(类似k8s),CodeArts(ci/cd)。
  6. 开发完整之后,在CCE上进行验证,在CodeArts上进行部署。
  7. 测试完成后,可以申请任务验收。将自己的代码分支博文等信息打包成zip文件进行上传。
  8. 后面就是等发钱啦。

1.3 开发代码

        不涉及

    1.4 上云第一步-购买OBS

    • 在华为云官网,点击产品,选择对象存储服务OBS,点击购买

    图片1.png

    • 选择以下选项,进行提交
      区域:广州(选离自己最近的城市)
      资源包类型:标准存储多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标准版 64ARM(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

    image.png

    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)。

    在存储桶的权限控制中,选择桶策略

    按照下图选择后提交

    image (1).png

    4.4 测试 OPA 策略

    image (2).png

    测试通过的请求:

    opa eval --data obs_policy.rego --input input_true.json "data.huaweicloud.obs.allow"

    image (3).png

    测试失败的请求:

    opa eval --data obs_policy.rego --input input_false.json "data.huaweicloud.obs.allow"

    image (4).png

    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。