Kubernetes Operator は、TLS および OIDC クラスター認証を有効にして実行中配置のデータベースユーザーの管理をサポートしています。これにより、設定された OIDC プロバイダーに対して認証する個々のデータベースユーザーオブジェクトを作成できます。
この方法は主に、OIDC プロバイダーが UserID
の authorizationType
で構成されている場合に使用されます。
GroupMembership
認可の場合、ロールは個々の MongoDBUser
リソースではなく、MongoDB
リソース仕様で直接管理されます。
Considerations
MongoDBUser
リソース: この方法で管理される各 OIDC ユーザーには、対応するMongoDBUser
カスタムリソースが必要です。Kubernetes Operator はこのリソースを使用して、 MongoDB内のユーザーを構成します。$external
データベース: OIDC などの外部メカニズムを介して認証するすべてのユーザーは、$external
仮想データベースに作成する必要があります。MongoDBUser
リソースで、spec.db
を "$external" に設定する必要があります。ユーザー名の形式:<configurationName> <userClaimValue>仕様。 ユーザー名 は、OIDC プロバイダーの構成名とユーザーのJSON web トークンの一意のクレームを組み合わせて、- という形式に従う必要があります。このクレームは OIDC プロバイダー構成で
userClaim
によって指定され、デフォルトはsub
です。認証と認可: OIDC IdP(OIDC IdP)はユーザーの認証(ID の検証)を行います。
MongoDBUser
リソースは、 MongoDB内でユーザーの認可(実行権限の定義)を担当します。
前提条件
データベースユーザーを管理する前に、OpenID Connect を有効にして レプリカセットまたはシャーディングされたクラスターを配置する必要があります。有効になっている。オプションで、TLS を有効にできます。詳細については、データベース リソースの保護 を参照してください。
データベースユーザーの追加
MongoDBUser YAMLファイルを作成します。
ユーザーを定義するためのファイル(例: my-oidc-user.yaml
)を作成します。
metadata.name
: Kubernetes内の MongoDBUserリソースの一意の名前。spec.username
: ID プロバイダーのconfigurationName
とユーザーのユニーク トークン クレームを<configurationName>/<userClaimValue>
形式で組み合わせたユーザーの OIDC ID。spec.db
: これは$external
である必要があります。spec.mongodbResourceRef.name
: このユーザーが属するMongoDB
リソースの名前。spec.roles
: このユーザーに付与するMongoDBロールの配列。
以下は、 アプリデータデータベースへの読み取りおよび書込みアクセス権を持つユーザーを作成する例です。
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: # A unique name for this Kubernetes resource. name: oidc-app-user-1 spec: # This username MUST match the 'userClaim' from the OIDC token. username: "idp0/a1b2c3d4e5f6g7h8" # OIDC users MUST be created in the $external database. db: "$external" # Point to the MongoDB deployment where this user should be created. mongodbResourceRef: name: my-oidc-replicaset # Grant MongoDB roles to the user. roles: - db: "app-data" name: "readWrite"
データベースユーザーの削除
データベースユーザーを削除するには、単純にそのユーザーに関連付けられている MongoDBUser
リソースを削除します。Kubernetes Operator は、 MongoDBデータベースからユーザーを自動的に削除します。次のコマンドに MongoDBUser
リソースの metadata.name
を渡します。
kubectl delete mongodbuser oidc-app-user-1