10.15.5. 既存のユーザーのアカウントへの移行
radosgw-admin user modify コマンドを使用して、既存の IAM ユーザーアカウントを変更できます。Ceph Object Gateway アカウントに関連付けられたロールを作成すると、radosgw-admin role list --account-id <RGWaccountID> コマンドを使用してリスト表示できます。
手順
既存のユーザー IAM アカウントを変更します。
構文
radosgw-admin user modify --uid={userid} --account-id={accountid}
アカウントユーザーにはデフォルトでは権限がないため、ユーザーの元の権限を復元するにはアイデンティティーポリシーを追加する必要があります。または、既存のユーザーごとに新しいアカウントを作成することもできます。その際、--account-root オプションを追加して、各ユーザーを対象のアカウントの root ユーザーにします。
ユーザーのすべてのバケットの所有権がアカウントに譲渡されます。
アカウントのメンバーシップは永続的です。一度追加されたユーザーはアカウントから削除できません。
ユーザーの通知トピックの所有権はアカウントに譲渡されません。通知は引き続き機能しますが、トピックは SNS トピック API に表示されなくなります。
通知トピックの移行
アカウントトピックは、notification_v2 機能が有効になっている場合にのみサポートされます。
移行の影響 アカウントのないユーザーがアカウントに移行されると、既存の通知トピックは RadosGW 管理 API 経由で引き続きアクセスできますが、ユーザーは SNS トピック API 経由ではアクセスできなくなります。にもかかわらず、トピックは引き続き機能し、バケット通知は期待どおりに配信され続けます。
トピックの再作成 アカウントユーザーは、同じ名前を使用してトピックを再作成する必要があります。古いトピック (現在はアクセスできません) と新しいアカウント所有のトピックは干渉することなく共存します。
バケット通知設定の更新 古いユーザー所有のトピックにサブスクライブされているバケットは、新しいアカウント所有のトピックを使用するように更新する必要があります。通知の重複を防ぐには、同じ通知 ID を維持します。
たとえば、バケットの既存の通知設定は以下のようになります。
{"TopicConfigurations": [{ "Id": "ID1", "TopicArn": "arn:aws:sns:default::topic1", "Events": ["s3:ObjectCreated:*"]}]}
更新された設定は次のようになります。
{"TopicConfigurations": [{ "Id": "ID1", "TopicArn": "arn:aws:sns:default:RGW00000000000000001:topic1", "Events": ["s3:ObjectCreated:*"]}]}
この例では、RGW00000000000000001 はアカウント ID、topic1 はトピック名、ID1 は通知 ID です。
古いトピックの削除 バケットから、古いユーザー所有のトピックへのサブスクライブが解除された場合、管理者は削除できます。
$ radosgw-admin topic rm --topic topic1
アカウントなしのユーザーから RGW アカウントへのユーザーの移行
アカウントなしから RGW アカウントにユーザーを移行する場合は、シームレスな IO 移行と適切な IAM 設定を確保するために、以下の手順に従ってください。
ユーザーの移行中にアカウントルートフラグを割り当てます。ユーザーをアカウントに移行するときに、アカウントルートフラグが追加されていることを確認します。これにより、移行に必要な権限がユーザーに付与されます。
radosgw-admin user modify --uid <user_ID> --account-id <Account_ID> --account-rootS3 アクセスポリシーを割り当てます。ユーザーを移行した後に、適切な IAM ポリシーを割り当て、ユーザーに S3 アクセスを許可します。この場合、AmazonS3FullAccess ポリシーを割り当てます。
radosgw-admin user policy attach --uid <user_ID> --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccessaccount-root 権限を削除します。移行して必要なアクセス権を付与した後、ユーザーからアカウントのルート権限を削除して、権限の範囲を制限します。
radosgw-admin user modify --uid <user_ID> --account-root=0