アイデンティティとアクセス管理(IAM)

RustFS のアイデンティティとアクセス管理(IAM)について、アイデンティティの種類、ポリシーの割り当て、ポリシー評価の意味を説明します。

RustFS には、AWS IAM のポリシー言語をモデルにした、組み込みのアイデンティティとアクセス管理(IAM)があります。S3 のデータアクセス、Console の操作、管理 API の呼び出しを問わず、すべてのリクエストは認証情報で認証されたあと、そのアイデンティティに割り当てられたポリシーで認可されます。

アイデンティティの種類

RustFS では、次のアイデンティティの種類を区別します。

アイデンティティ作成方法主な用途
ルート認証情報サーバー起動時の環境変数 RUSTFS_ACCESS_KEY / RUSTFS_SECRET_KEY初期設定と緊急時の管理。ルートアカウントは IAM のアイデンティティポリシー評価を迂回します(所有者としての扱い)。
IAM ユーザーConsole または管理 API(add-user)人またはアプリケーション向けの、長期の名前付きアカウント。
グループConsole または管理 API(update-group-members)1 組のポリシーを多数のユーザーに一度に割り当てます。ユーザーは、所属するすべてのグループのポリシーを継承します。
サービスアカウント(アクセスキー)Console または管理 API(add-service-account)親ユーザーに属する派生認証情報です。親の権限を継承し、任意で埋め込まれたセッションポリシーによってさらに制限でき、有効期限を持てます。
STS の一時認証情報AssumeRole / AssumeRoleWithWebIdentity の STS 呼び出しアクセスキー、シークレットキー、セッショントークンを持つ短期間の認証情報(15 分から 12 時間)。
外部 OIDC アイデンティティOpenID Connect プロバイダー(Keycloak、Authing、その他の標準 OIDC IdP)Console のシングルサインオン。ID トークンのクレームは RustFS のポリシー名に対応付けられ、RustFS は STS の一時認証情報を発行します。

ルート認証情報は IAM のアイデンティティポリシーを迂回しますが、バケットポリシーはルートの S3 リクエストを拒否できます。バケットポリシーの拒否を迂回するのは GetBucketPolicy、PutBucketPolicy、DeleteBucketPolicy だけであり、これは所有者がアクセスを回復できるようにするためです。ルート認証情報はデプロイの初期設定にだけ使い、日常の作業には IAM ユーザーとサービスアカウントを作成します。

ポリシーとアイデンティティの対応

ポリシーは、RustFS に保存される名前付きの JSON ドキュメントです。割り当ては次のように機能します。

  • ユーザーへの割り当て — 1 つ以上のポリシー名を IAM ユーザーに割り当てます(set-user-or-group-policy、またはポリシーのリストを受け付ける idp/builtin/policy/attach エンドポイント)。
  • グループへの割り当て — isGroup=true による同じ仕組みです。グループの各メンバーは、自身のポリシーに加えてグループのポリシーを受け取ります。
  • サービスアカウント — 独自のポリシー割り当ては持ちません。親ユーザーのポリシーを組み合わせた結果の下で評価されます。サービスアカウント作成時に明示的なポリシードキュメントを指定した場合、そのセッションポリシーは追加の制限として適用されます(両方で許可される必要があります)。
  • STS セッション — 親アイデンティティのポリシーを継承します。AssumeRole のリクエストパラメータ Policy で、一時認証情報をさらに制限する追加のセッションポリシーを埋め込めます。
  • OIDC アイデンティティ — ID トークンの groups と roles のクレーム値が RustFS のポリシー名と照合されます。一致したポリシーが、発行される STS の一時認証情報を制御します。

RustFS には、次の組み込み(canned)ポリシーがあります。readwrite、readonly、writeonly、diagnostics、consoleAdmin です。内容とカスタムポリシーの書き方は、ユーザー、グループ、ポリシーを参照します。

ポリシー評価の意味

アイデンティティに複数のポリシーが割り当てられている場合、RustFS はステートメントを統合し(重複は除く)、統合したドキュメントを評価します。

  1. 明示的な拒否が優先されます。 すべての Deny ステートメントを最初に確認します。リクエストに一致する Deny ステートメントがあれば、Allow の有無にかかわらずリクエストは拒否されます。
  2. 所有者の特例。 ルートアカウントは IAM のアイデンティティポリシー評価を迂回します。上記のバケットポリシーの確認と例外は、引き続き適用されます。
  3. 明示的な許可が必要です。 それ以外の場合、要求されたアクションとリソースに一致する Allow ステートメントが少なくとも 1 つ必要です。
  4. 既定は拒否です。 一致するステートメントがなければ、リクエストは拒否されます。

セッションポリシーを持つサービスアカウントと STS セッションでは、有効な権限は積集合です。親のポリシーとセッションポリシーの両方が、リクエストを許可する必要があります。

このセクションの内容

On this page