10.15. アイデンティティーおよびアクセス管理 (IAM) (テクノロジープレビュー)
アイデンティティーおよびアクセス管理 (IAM) 機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、実稼働環境での Red Hat サービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。詳細は、Red Hat テクノロジープレビュー機能のサポート範囲 を参照してください。
この Ceph Object Gateway はオプション機能としてユーザーアカウントをサポートし、AWS Identity and Access Management (IAM) と同様のユーザー、グループ、およびロールのセルフサービス管理を可能にします。
アカウントの root ユーザー
各アカウントはアカウント root ユーザーによって管理されます。通常のユーザーやロールと同様に、アカウントとアカウント root ユーザーは、管理者が radosgw-admin または Admin Ops API を使用して作成する必要があります。アカウントの root ユーザーには、アカウントが所有するすべてのリソースに対するデフォルトのパーミッションがあります。root ユーザーの認証情報 (アクセスキーとシークレットキー) を Ceph Object Gateway IAM API で使用すると、Ceph Object Gateway S3 API で使用する追加の IAM ユーザーとロールを作成したり、関連するアクセスキーとポリシーを管理したりできます。
アカウントの所有者は、このアカウントの root ユーザーを管理目的にのみ使用し、特定のアプリケーションに対して権限を詳細に指定したユーザーとロールを作成することを推奨します。
アカウントの root ユーザーはアカウント内のリソースにアクセスするために IAM ポリシーを必要としませんが、明示的にアクセスを拒否するポリシーを追加できます。Deny ステートメントは慎重に使用してください。
リソース所有者
通常の (アカウントを持たない) ユーザーがバケットを作成し、オブジェクトをアップロードした場合に、そのようなリソースはこのユーザーが所有することになります。関連付けられている S3 ACL では、そのユーザーが所有者と権限付与者の両方として指定され、それらのバケットは s3:ListBuckets リクエストで所有ユーザーにのみ表示されます。対照的に、ユーザーまたはロールがアカウントに属している場合、ユーザーやコールが作成するリソースはアカウントにより所有されます。関連付けられている S3 ACL では、アカウント ID が所有者および権限受領者として指定され、それらのバケットは、そのアカウント内の任意のユーザーまたはロールによって送信された s3:ListBuckets リクエストに表示されます。
リソースはユーザーではなくアカウントが所有するため、すべての使用統計とクォータの適用は、個々のユーザーではなくアカウント全体に適用されます。
アカウント IDS
アカウント識別子は、ユーザー ID またはテナント名を受け入れるいくつかの場所で使用できます。そのため、アカウント ID では、あいまいさを避けるために特別な形式が使用されます。RGW という文字列の後に 17 桁の数字が続きます (例: RGW33567154695143645)。指定されていない場合は、アカウント作成時にその形式のアカウント ID が無作為に生成されます。
アカウント ID は通常、IAM ポリシードキュメントの Amazon リソース名 (ARN) に記載されています。たとえば、arn:aws:iam::RGW33567154695143645:user/A は、そのアカウント内の A という名前の IAM ユーザーを指します。Ceph Object Gateway は、その位置でのテナント名もサポートします。アカウント ID は、CanonicalUser タイプの Grantee の ACL でも使用できます。ここではユーザー ID もサポートされています。
IAM ポリシー
アカウントのないユーザーはデフォルトでバケットの作成とオブジェクトのアップロードが許可されますが、アカウントユーザーの場合は最初は権限が割り当てられていません。IAM ユーザーが API 操作を実行する前に、操作を許可するためのポリシーを追加する必要があります。アカウントの root ユーザーは、いくつかの方法でユーザーに ID ポリシーを追加できます。iam:PutUserPolicy および iam:AttachUserPoliicy アクションを使用して、ユーザーにポリシーを直接追加します。IAM グループを作成し、iam:PutGroupPolicy および iam:AttachGroupPoliicy アクションを使用してグループポリシーを追加します。iam:AddUserToGroup アクションを使用してそのグループに追加されたユーザーは、グループのポリシーをすべて継承します。IAM ロールを作成し、iam:PutRolePolicy および iam:AttachRolePoliicy アクションを使用してロールポリシーを追加します。sts:AssumeRole および sts:AssumeRoleWithWebIdentity アクションを使用してこのロールを一時的に使用するユーザーは、ロールのすべてのポリシーを継承します。これらのアイデンティティーポリシーは、単一アカウント内でのポリシーの評価およびクロスアカウントポリシー評価ロジックのルールに従って評価されます。
プリンシパル
ポリシードキュメント内の “プリンシパル“ ARN は、ユーザーがアカウントに属している場合にユーザーを別の方法で参照します。アカウント外では、ユーザープリンシパルは、arn:aws:iam:::user/uid や arn:aws:iam::tenantname:user/uid などのユーザー ID で名前が付けられます。ここで、uid は radosgw-admin の --uid 引数に対応します。
アカウント内では、ユーザープリンシパルは、arn:aws:iam::RGW33567154695143645:user/name などのユーザー名を使用します。ここで、name は radosgw-admin の --display-name 引数に対応します。アカウントユーザーは引き続きテナントフォームと同じであるため、ユーザーがアカウントに移行されても既存のポリシーは引き続き機能します。
テナントの分離
ユーザーと同様に、アカウントはオプションで、バケットの名前空間の分離のためにテナントに所属できます。たとえば、“acct” という名前のアカウントがテナント “a” の下に存在し、“acct” という名前の別のアカウントをテナント “b” の下に存在させることができます。
テナントアカウントには、同じテナント名を持つユーザーのみを含めることができます。テナントに関係なく、アカウント ID とメールアドレスはグローバルに一意である必要があります。
10.15.1. アカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
IAM ユーザーを作成するには、radosgw-admin アカウントを使用します。
注記ユーザー ID と表示名を指定する必要があります。メールアドレスを指定することもできます。
構文
radosgw-admin account create [--account-name={name}] [--account-id={id}] [--email={email}]例
radosgw-admin account create --account-name=user1 --account-id=12345 --email=user1@example.com