検索

第7章 付録: Image Mode for RHEL でのユーザー、グループ、SSH キー、シークレットの管理

download PDF

Image Mode for RHEL でのユーザー、グループ、SSH キー、およびシークレットの管理について説明します。

7.1. ユーザーとグループの設定

Image Mode for RHEL は、汎用的なオペレーティングシステムの更新および設定メカニズムです。ユーザーまたはグループを設定するために使用することはできません。唯一の例外は、--root-ssh-authorized-keys オプションを持つ bootc install コマンドです。

汎用ベースイメージのユーザーとグループの設定
通常、ディストリビューションのベースイメージには設定がありません。セキュリティーリスクがあるため、汎用イメージ内の公開されている秘密鍵を使用してパスワードと SSH キーを暗号化しないでください。
systemd 認証情報を使用した SSH キーの注入
一部の環境では、systemd を使用して、root パスワードまたは SSH authorized_keys ファイルを注入できます。たとえば、System Management BIOS (SMBIOS) を使用して、SSH キーシステムファームウェアを注入します。これは、qemu などのローカルな仮想化環境で設定できます。
cloud-init を使用したユーザーと SSH キーの注入
多くの Infrastructure as a Service (IaaS) および仮想化システムは、cloud-initignition などのソフトウェアによって一般的に処理されるメタデータサーバーを使用します。AWS instance metadata を参照してください。cloud-init または Ignition は、使用しているベースイメージに含まれる場合があります。または、独自の派生イメージにインストールすることもできます。このモデルでは、SSH 設定はブート可能なイメージの外部で管理されます。
コンテナーまたはユニットのカスタムロジックを使用したユーザーと認証情報の追加
cloud-init などのシステムには特権がありません。コンテナーイメージを起動する方法で、認証情報を管理するための任意のロジックを注入できます。たとえば、systemd ユニットを使用できます。認証情報を管理するには、FreeIPA などのカスタムのネットワークホストソースを使用できます。
コンテナービルドでのユーザーと認証情報の静的な追加

パッケージ指向のシステムでは、次のコマンドにより、派生ビルドを使用してユーザーと認証情報を注入できます。

RUN useradd someuser

shadow-utils のデフォルトの useradd 実装に問題がある場合があります。ユーザーとグループの ID が動的に割り当てられることにより、ドリフトが発生する可能性があります。

ユーザーとグループのホームディレクトリーと /var ディレクトリー

永続的に /home /var/home に設定されたシステムの場合、最初のインストール後にコンテナーイメージで行われた /var への変更は、その後の更新には適用されません。

たとえば、コンテナービルドに /var/home/someuser/.ssh/authorized_keys を注入した場合、既存のシステムは更新された authorized_keys ファイルを取得しません。

systemd ユニットでの DynamicUser=yes の使用

システムユーザーの場合、可能な場合は systemd DynamicUser=yes オプションを使用します。

これは、潜在的な UID または GID のドリフトを回避できるため、パッケージのインストール時にユーザーまたはグループを割り当てるパターンよりもはるかに優れています。

systemd-sysusers の使用

たとえば、派生ビルドでは systemd-sysusers を使用します。詳細は、systemd-sysusers のドキュメントを参照してください。

COPY mycustom-user.conf /usr/lib/sysusers.d

sysusers ツールは、必要に応じて起動時に従来の /etc/passwd ファイルに変更を加えます。/etc が永続的であれば、UID または GID のドリフトを回避できます。つまり、UID または GID の割り当ては、特定のマシンがどのようにアップグレードされてきたかによって異なります。

systemd JSON ユーザーレコードの使用
JSON user recordssystemd に関するドキュメントを参照してください。sysusers とは異なり、これらのユーザーの標準的な状態は /usr にあります。後続のイメージでユーザーレコードが破棄されると、そのレコードはシステムからも消えます。
nss-altfiles の使用

nss-altfiles を使用すると、systemd の JSON ユーザーレコードを削除できます。これは、システムユーザーを /usr/lib/passwd/usr/lib/group に分割します。OSTree プロジェクトが /etc/passwd に関連する /etc の 3 方向マージを処理する方法と整合します。現在、ローカルシステムで /etc/passwd ファイルが何らかの方法で変更された場合、その後コンテナーイメージの /etc/passwd に対して行われた変更は適用されません。

rpm-ostree によってビルドされたベースイメージでは、nns-altfiles がデフォルトで有効になっています。

また、ベースイメージには、UID または GID のドリフトを回避するために、NSS ファイルによって事前に割り当てられ、管理されるシステムユーザーがあります。

派生コンテナービルドでは、たとえば /usr/lib/passwd にユーザーを追加することもできます。sysusers.d または DynamicUser=yes を使用します。

ユーザーのマシンローカル状態

ファイルシステムのレイアウトは、ベースイメージによって異なります。

デフォルトでは、ユーザーデータはベースイメージに応じて、/etc/etc/passwd/etc/shadow および groups と、/home との両方に保存されます。ただし、いずれの汎用ベースイメージもマシンローカルな永続状態である必要があります。このモデルでは、/home/var/home/user へのシンボリックリンクです。

システムプロビジョニング時のユーザーと SSH キーの注入

/etc/var がデフォルトで永続化するように設定されたベースイメージの場合、Anaconda やキックスタートなどのインストーラーを使用してユーザーを注入できます。

通常、汎用インストーラーは 1 回限りのブートストラップ用に設計されています。その後、設定はミュータブルなマシンローカル状態になり、他のメカニズムを使用して Day 2 操作で変更できるようになります。

Anaconda インストーラーを使用して初期パスワードを設定できます。ただし、この初期パスワードを変更するには、passwd などの別のシステム内ツールが必要です。

これらのフローは bootc-compatible システムでも同様に機能します。異なるシステム内ツールに変更する必要なく、ユーザーが汎用ベースイメージを直接インストールすることをサポートします。

一時的なホームディレクトリー

多くのオペレーティングシステムのデプロイメントでは、永続的でミュータブルかつ実行可能な状態が最小限に抑えられます。これにより、ユーザーのホームディレクトリーが破損する可能性があります。

/home ディレクトリーを tmpfs として設定すると、再起動後にユーザーデータが確実に消去されます。このアプローチは、一時的な /etc ディレクトリーと組み合わせると特に効果的です。

たとえば、SSH authorized_keys やその他のファイルを注入するようにユーザーのホームディレクトリーをセットアップするには、systemd tmpfiles.d スニペットを使用します。

f~ /home/user/.ssh/authorized_keys 600 user user - <base64 encoded data>

SSH は、/usr/lib/tmpfiles.d/<username-keys.conf としてイメージ内に埋め込まれています。もう 1 つの例は、ネットワークからキーを取得して書き込むことができる、イメージに埋め込まれたサービスです。これは cloud-init で使用されるパターンです。

UID と GID のドリフト
/etc/passwd および同様のファイルは、名前と数値識別子間のマッピングです。マッピングが動的で、"ステートレス" なコンテナーイメージビルドと組み合わされると、問題が発生する可能性があります。各コンテナーイメージビルドでは、RPM のインストール順序やその他の理由により、UID が変更される場合があります。当該ユーザーが永続状態を維持する場合、これは問題になる可能性があります。このようなケースに対処するには、sysusers.d を使用するか、DynamicUser=yes を使用するように変換します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.