Docs Menu
Docs Home
/
Kubernetes Operator 用のMongoDBドライバー
/ /

OIDC 認証を使用したデータベースユーザーの管理

Kubernetes Operator は、TLS および OIDC クラスター認証を有効にして実行中配置のデータベースユーザーの管理をサポートしています。これにより、設定された OIDC プロバイダーに対して認証する個々のデータベースユーザーオブジェクトを作成できます。

この方法は主に、OIDC プロバイダーが UserIDauthorizationType で構成されている場合に使用されます。

GroupMembership認可の場合、ロールは個々の MongoDBUser リソースではなく、MongoDBリソース仕様で直接管理されます。

  • 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 を有効にできます。詳細については、データベース リソースの保護 を参照してください。

1

ユーザーを定義するためのファイル(例: 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"
2
kubectl apply -f my-oidc-user.yaml

データベースユーザーを削除するには、単純にそのユーザーに関連付けられている MongoDBUserリソースを削除します。Kubernetes Operator は、 MongoDBデータベースからユーザーを自動的に削除します。次のコマンドに MongoDBUserリソースの metadata.name を渡します。

kubectl delete mongodbuser oidc-app-user-1

項目一覧