测试和验证

此页介绍了可以直接从属于已配置动态组的 VM 实例执行的一些测试。RCLONE 和 OCIFS 应使用多种用于测试读写访问的命令进行类似的测试。

RCLONE 测试

作为这项工作的一部分,存储桶上的保留规则被删除一段时间,这样我们就可以完全测试 rclone 对存储桶的读写能力。

测试完成后,可以重新建立并锁定规则。测试通过以下方式完成:从对存放归档存储桶的区间内所有存储桶具有“桶读取”和“对象读取”权限的动态组开始。

要查看已配置的 RCLONE 远程,请运行以下命令:
OS prompt> rclone config show [OCI-IP]
type = oracleobjectstorage
provider = instance_principal_auth
namespace = <tenancy-namespace>
compartment = ocid1.compartment.oc1..xxx
region = us-ashburn-1
以下所有命令都需要 OCI-IP 才能引用我们配置的对象存储环境和凭证。要将文件同步(复制或更新)到存储桶,已使用 OCI 控制台预创建存储桶,因为我们的窄权限集不包括创建或删除存储桶。以下块显示了同步操作,后跟一个存储桶列表。
OS prompt> rclone sync rclone-test.txt OCI-IP:rclone-testing
OS prompt> rclone ls OCI-IP:rclone-testing 
 33 rclone-test.txt

删除文件也可以进行测试。有关所有可用选项(例如过滤),请遵循 RCLONE 文档。

OS prompt> rclone delete OCI-IP:rclone-testing/rclone-test.txt

策略更改

通常,如果操作成功,RCLONE 将仅返回到提示,但如果缺少特定操作的权限,则将返回错误消息。例如,如果尝试根据我们先前定义的权限删除存储桶,操作将失败,并显示以下消息:
OS prompt> rclone purge OCI-IP:rclone-testing
2024/08/29 14:36:15 ERROR : : Failed to rmdir: Error returned by ObjectStorage Service. Http Status Code: 404. Error Code: BucketNotFound. Opc request id: iad-1:xxx. Message: Either the bucket named 'rclone-testing' does not exist in the namespace '<namespace>' or you are not authorized to access it
Operation Name: DeleteBucket
如前所述,可以根据需要更改为动态组定义的策略语句。例如,要允许创建或删除存储桶,可以添加以下语句:
allow dynamic-group oci-rclone-full-dg to manage buckets in compartment cis-landing-top:app-cmp where ANY {target.bucket.name =
    'rclone-testing'}
添加此策略语句后,可以重试以前的操作,存储桶将被删除。

为“OCI 对象存储”屏幕打开浏览器并刷新存储桶上的页面,以便可以验证每个操作,这很有帮助。

OCIFS 测试

使用上一节中提供的示例,OCIFS 实用程序以各种方式进行了测试。一旦动态组和策略按设计运行,就可以更改策略,并在编辑权限时快速看到结果更改。

建议在测试权限更改过程中卸载 OCIFS 文件系统。本文档提供了卸载的语法。

OCIFS 提供的高速缓存也可用,并在解决方案中进行了测试。介绍了多个选项,其中任何选项都可以与解决方案配合使用。

注意:

使用自动挂载可能会影响 OCIFS 高速缓存,因为它会删除高速缓存,除非使用 cache-reusecache-keep 选项。

以下示例显示了如何使用 OCIFS 创建挂载点并连接到存储桶:

root OS prompt# mkdir /mnt/read-bucket
root OS prompt# ocifs --auth=instance_principal read-bucket /mnt/read-bucket/
root OS prompt# cd /mnt/read-bucket
root OS prompt# ls -al
total 0
drwxr-xr-x. 2 root root 6 Nov 6 14:56 .
drwxr-xr-x. 5 root root 68 Nov 6 14:56 ..
-rw-r--r--. 1 root root 4 Nov 6 14:57 file.txt
作为有限权限的测试,此 VM 不应能够从此存储桶中删除文件。出现以下错误:
root OS prompt# rm file.txt
rm: remove regular file 'file.txt'? y
rm: cannot remove file.txt': Input/output error

可以使用其他存储桶、动态组定义和策略语句执行进一步的测试。在更改和测试之间留出一两分钟,以便权限可以传播。