設定の構成
このトピックでは、IAM権限、動的グループ、OCI Object StorageサービスおよびVMインスタンスを使用してテナンシを構成する方法について説明します。
オブジェクト・バケットの設定
このソリューションに使用されるバケットは、標準モードで作成された単純なオブジェクト・バケットで、すべての階層(標準、頻度の低い、アーカイブ)がサポートされるためです。これにより、オブジェクトの年齢に応じて階層を変更でき、指定した時間枠が経過するまで最下位のコスト・アーカイブ層に流れるようになります。
このバケットに保持ルールを追加します。これにより、作成後にオブジェクトの変更や削除が事実上防止されます。ルールは、テストが完了するまでロックされません。
また、オブジェクト・ライフサイクル・ルールを追加して、要件に基づいて各オブジェクトのストレージ層を自動的に変更します。オブジェクトがアーカイブ層に移動されると、そのオブジェクトはすぐに使用できなくなりますが、アクセス前に「再コール」する必要があります。これは、設計する必要があるOCI関数、スクリプトまたは外部プロセスを介して実行できます。
最後に、バケットのOCIDと名前がわかると、バケットにアクセスする動的グループに狭い権限を設定できます。これらのポリシー・ステートメントは、OCIの高度なポリシー述語( target.bucket.name.
など)を利用できます
動的グループの設定
テナンシがCISランディング・ゾーンを使用して設定されている場合、動的グループがコンパートメント・レベルですでに存在する可能性があります。この項では、既存の動的グループがないことを前提としています。
動的グループ
異なるOCI仮想マシンのセットが、RCLONEまたはOCIFSをインストールし、オブジェクト・ストレージにアクセスすることを検討してください。したがって、VMが作成される場所に応じて、特定のインスタンスOCIDsまたはコンパートメントOCIDSに基づいて動的グループを定義できます。このソリューションでは、次の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にプレースホルダを使用できます。前述の2番目のオプションでは、動的グループの更新を気にすることなく、参照先のコンパートメントに無制限のインスタンスを作成できます。ソリューションに使用されるすべてのインスタンスが同じコンパートメントに存在する場合は、読取り専用インスタンスにもフル・アクセス権が付与されないように、インスタンスOCIDsを使用して動的グループを定義する必要があります。
設定権限
最初に、コンパートメントまたはバケットに対する特定のオブジェクト・ストレージ権限がないとします。まず、特定のポリシーを作成するか、既存のポリシーにステートメントをアタッチできます。
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のシェイプはすべて機能します。ポート443のVCNエグレスと同様に、サービス・ゲートウェイまたはNAT Gatewayを介した基本的な接続が必要です。オブジェクト・ストレージのプライベート・エンドポイントが使用中の場合、ゲートウェイおよびエグレス・ルールは不要です。
基本的に、VMはOCI Object Storageにアクセスできる必要があります。もう1つの重要な要件は、動的グループで参照されるコンパートメント内にVMが作成されることです。前述のように、動的グループ定義は、後でVM OCIDのみを含めるように調整することも、動的グループのコンパートメントベース定義と一致させることもできます。VMが設定されてアクセス可能になったら、RCLONEをインストールできます。一般的なRCLONEドキュメント(特に「OCI Object Storage」セクション)に従います。
動的グループ設定を利用するために、ここでの認証タイプはinstance_principal_auth
です。前述のドキュメントのステップに従って、一連のテストを作成します。動的グループを介して付与された権限に応じて、間違ったrclone
コマンドを使用してバケットを簡単に削除できます。前述のように、このソリューションの権限は、動的グループを「読取りバケット」および「オブジェクトの管理」に制限することから始まります。そのため、バケットの作成や削除はできませんが、その内容は削除できます。RCLONEドキュメントには、コンテンツのリスト、オブジェクトの配置、単一オブジェクトの削除など、テスト用の安全な例がいくつか用意されています。
OCIFSを使用したVMインスタンスの設定
前の項と同様に、仮想マシンの作成は範囲外です。同様に、OCIFSは一連のVMにインストールされます。
前に追加した動的グループおよびポリシーを利用するインスタンス・プリンシパルの使用の詳細は、OCIFSユーティリティのドキュメントを参照してください。
- direct ocifs mountコマンド
/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