配置设置
本主题将介绍如何使用 IAM 权限、动态组、 OCI 对象存储服务和 VM 实例配置租户。
设置对象存储桶
此解决方案使用的存储桶是在标准模式下创建的简单对象存储桶,因为这支持所有层 - 标准、不经常和归档。这允许对象在老化时更改层,流入成本最低的档案层,直到指定的时间范围过去。
在此存储桶中,我们添加了保留规则,这可以有效地防止对象在创建后发生更改或删除。在完成测试之前,规则不会被锁定。
此外,我们添加了对象生命周期规则,以便根据需求自动更改每个对象的存储层。将对象移至归档层后,该对象将不再立即可用,而是必须先“撤回”才能访问。这可以通过 OCI 函数、脚本或需要设计的一些外部流程来实现。
最后,一旦已知存储桶的 OCID 和名称,我们就可以对将访问存储桶的动态组设置窄权限。这些策略语句可以利用 OCI 的高级策略谓词,例如 target.bucket.name.
设置动态组
如果使用 CIS 体系框架设置了租户,则可能已在区间级别存在动态组。本节假定不存在现有的动态组。
动态组
考虑不同的 OCI 虚拟机集将安装 RCLONE 或 OCIFS 并访问对象存储。因此,我们可以根据特定实例 OCID 或区间 OCIDS 来定义动态组,具体取决于 VM 的创建位置。为此解决方案创建了以下 2 个动态组:
Name: oci-rclone-full-dg Matching Rule: ANY {instance.id = 'ocid1.xxx.yyy.zzz1', instance.id = 'ocid.xxx.yyy.zzzz2' } or instance.compartment.id = 'ocid1.compartment.yyy.zzz'
Name: oci-ocifs-readonly-dg Matching Rule: ANY {instance.id = 'ocid1.xxx.yyy.zzz3', instance.id = 'ocid.xxx.yyy.zzz4' } or instance.compartment.id = 'ocid1.compartment.yyy.zzz
如果尚未创建或可能更改实例 OCID,则可以为该 OCID 使用占位符。上面的第二个选项允许您在引用的区间中创建无限的实例,而不必担心更新动态组。请注意,如果用于解决方案的所有实例都存在于同一区间中,则需要使用实例 OCID 定义动态组,以便不会为只读实例提供完全访问权限。
设置权限
假设开始时,您对区间或存储桶没有特定的对象存储权限。首先,我们可以创建一个特定的策略,或者将我们的声明附加到现有的策略。
cislz-appdev-cmp-policy
),以添加动态组语句,如下所示。如果从头开始,以下示例使用策略模板定义对对象存储的动态组和用户组权限访问。如果现在或以后需要,可以使用条件来增强策略语句。allow dynamic-group oci-rclone-full-dg to read buckets in compartment cis-landing-top:app-cmp where ANY {target.bucket.name = 'archive-bucket-1', target.bucket.name = 'archive-bucket-2' }
allow dynamic-group oci-rclone-full-dg to manage objects in compartment cis-landing-top:app-cmp where ANY {target.bucket.name = 'archive-bucket-1', target.bucket.name = 'archive-bucket-2' }
allow dynamic-group oci-ocifs-readonly-dg to read objects in compartment cis-landing-top:app-cmp where ANY {target.bucket.name = 'archive-bucket-1', target.bucket.name = 'archive-bucket-2' }
稍后可以添加或删除更多权限,作为测试的一部分。建议对 RCLONE 和 OCIFS 进行全面测试,以确保授予的任何权限都正确。
使用 RCLONE 设置 VM 实例
OCI 虚拟机创建超出了此解决方案的范围,但任何配置 Linux VM 都可以正常工作。必须通过服务网关或 NAT 网关建立基本连接,端口 443 的 VCN 出站也是如此。如果正在使用对象存储专用端点,则不需要网关和出站规则。
从本质上讲,VM 必须能够访问 OCI Object Storage。另一个重要要求是在动态组中引用的区间内创建 VM。如上所述,以后可以调整动态组定义以仅包括 VM OCID,也可以与动态组的基于区间的定义匹配。设置和访问 VM 后,可以安装 RCLONE。请遵循常规 RCLONE 文档,特别是 OCI Object Storage 部分。
为了利用动态组设置,此处的验证类型为 instance_principal_auth
。按照以上文档中的步骤操作,并构建一组测试。根据通过动态组授予的权限,您可以使用错误的 rclone
命令轻松删除存储桶。如上所述,此解决方案开始时的权限将动态组限制为“读取存储桶”和“管理对象”。因此,您无法创建或删除存储桶,但可以删除其内容。RCLONE 文档提供了一些用于测试的安全示例,例如列出内容、放置对象和删除单个对象。
使用 OCIFS 设置 VM 实例
与上一节类似,虚拟机创建不在范围内。OCIFS 将同样安装在一组 VM 上。
有关使用实例主体(这将利用之前添加的动态组和策略)的更多信息,请参见 OCIFS Utility 文档。
- 直接 ocifs 挂载命令
/etc/fstab
条目- 自动挂载配置
archive-bucket /mnt/archive-bucket fuse.ocifs auth=instance_principal 0 0
archive-bucket -fstype=fuse,allow_other,auth=instance_principal :ocifs\#archive-bucket