実務に直接効かない過大な課題をやりたい だけど内心は面倒くさくてやりたくないw

テヘペロ☆彡

 

■主要なプロトコルごとのシーケンスをポンチ絵にしてまとめる

※模造紙がいいか。A4用紙20枚くらいにまとめるのがいいか。

※ネットワークプロトコルはL2~L4、L5以上はサーバプロトコル(例外もあり)

※他のプロトコルのベースに使われてるベーシックで単発なプロトコル

※OSI参照モデルやTCP/IPのようなスタンダードなプロトコルが絶対神のように君臨してる場合と、似たようなプロトコルが群雄割拠(呉越同舟?)に乱立してる場合がある。スタンダードなプロトコルを守らないベンダー(ciscoとかmicrosoftとかF5とかciscoとかciscoなど)もいてる。

※ていうかRFC読んで図にすればいいんじゃね?

※ストレージプロトコル(scsiとかiscsiとかFC)も

プロトコルではないが下記のような絶対神たちのシーケンスは過大な課題の肝になる

※OSカーネルのシーケンス

※基本ライブラリ群(glibcとか)のシーケンス

※クラウド(ていうかクラウドで使われているオーケストレーションツール)のシーケンス

 openstackだったりopenshiftやk8sなどの他に、AWSやAzureなどの独自実装も

※ハイパーバイザのシーケンス

※コンテナ仮想化技術のシーケンス

※ネットワークやミドルウェアで頻出するプロトコル。例えば下記

 

・nfs3、nfs4

・smtp、pop3、imap4(いまさら)

・mapi

・http(いまさら)

 ※単純と言われるけど実践レベルの応用はいっぱいある

・tls

 ※数カ月ごとに細部が変わる。年単位で根幹部分が変わる

 ※認証、署名検証、クライアント認証、セッション再開・・・

・ssh(いまさら)

 ※すべての基礎はtelnetとFTPか?

・scp

・sftp

・tftp

 ※地味に学ぶ価値がある(と思う)

・ntp

・smb

・kerberos

・ldap

・Active Directoryで使用するプロトコル(複数)

・dns(いまさら)

 ※microsoftの旧世代(workgroup)の名前解決もいてる

・snmp

・saml、oauth

 ※いたちごっこなセキュリティのプロトコルは他の複数のプロトコルをベースに据えてて

  いちいちややこしく年々ややこしさが倍増する

 

■プラットフォーム(のうちソフトウェアのみ)の整理

※プラットフォームとはエンタープライズITシステムにおける、「アプリケーション以外全部」。

 

・レイヤーとコンポーネントの分類

ネットワーク(L2~L7スイッチ、ゲートウェイ(ルータ、VPNげ、アプリケーションげ、・・・)、FW、ロードバランサ、NATルータ)、ストレージ、OS、仮想化技術(ハイパバイザ、コンテナ)、オーケストレーション、セキュリティ(各レイヤと各サービスごとを各方式ごとに整理w)、バックアップ、監視、ログ管理、クラスタウェア(HA、負荷分散、その他)、webサーバ、リバースプロキシ、フォワードプロキシ、ランタイム(仮想マシン、インタプリタ)、APサーバ、メモリベースキャッシングシステム、タスクキュー、メッセージキュー、SQLデータベース、NoSQLデータストア、ユーザ管理(認証認可などセキュリティ技術とユーザデータベースの複合)、CI/CD(設定管理、構築、テスト、デプロイ)、モニタリング、分析、Infrastracture As Serviceエンドポイント、その他のサーバ(メールサーバ、チャットサーバ、リポジトリサーバ、DNSサーバ、ntpサーバ、・・・)

・作業フェイズの分類

- 要件定義

- 方式設計

- 詳細設計・構築

- 単体テスト(正常系機能テスト、パフォーマンス短期負荷テスト、パフォーマンス長期負荷テスト)

 ※詳細設計項目で指定した単体機能の動作確認

 ※単体プロダクトが唄ってる機能が実現されるか見る

 ※上記が要件定義された(大容量)サイズや(高)負荷でもちゃんと実現されるか見る

 ※単体テストは単体のミドルウェアに対する動作テストだが、プロダクトスイーツのように

  プロダクトが複数のミドルウェアの集合体である場合は、プロダクトへの入力に対して

  期待される出力が得られるか等を確認する。

- 結合テスト(正常系連携テスト、パフォーマンス短期負荷テスト、パフォーマンス長期負荷テスト)

 ※複数のプロダクトを組み合わせて使用する場合、システム全体で基本設計で唄った各

   方式が連携して実現されるか見る。

 ※上記の「プロトコルとシーケンス」を参考にして各コンポ―ネントどうしでしゃべりあって

   正常なリクエストとレスポンスの連鎖がなされているかログやパケットキャプチャツール

   等で確認してプロトコルの定めるシーケンスに沿って動作が進行していることを確認

   する。

 ※パフォーマンスは、メモリ使用量、CPU時間、ネットワーク使用量、ディスクIO(ランダム、

   シーケンシャル)、レイテンシ、スループットを調べる

 ※そのほかに「ヤバそう」な部分に当たりをつけて「いじわるな」設定や条件やリクエストを

  考えて試して、誤作動やバグが無いか見る

 

■プラットフォーム(ソフトウェアのみ)自動化

・環境

 本番環境、開発環境、ステージング環境、DR環境

・ツール

 - CI/CDパイプライン(Ansible)

  ※実はsshスクリプトのforループのようなもの

 - リポジトリマネージャ(成果物:nexus、dockerhub、ソースコード:gitlab)

 - テストツール

 - 監視ツール

 - デプロイメントツール

 - 工程管理ツール(redmineなど)

 - 設定(構成)管理ツール(Ansible)

  ※Infrastracture As Codeダギャー

 

■アプリケーション開発自動化

・環境

 本番環境、開発環境、ステージング環境、DR環境

・ツール

 - CI/CDパイプライン?(jenkins、airflow)

  ※主にスケージューリングしてバッチ実行

 - リポジトリマネージャ(成果物:nexus、ソースコード:gitlab)

 - ビルドツール

 - テストツール

 - 監視ツール

 - デプロイメントツール

 - 工程管理ツール(redmineなど)

 - IDE(ローカル:eclips、クラウド:jupyter notebook) 

 

■アプリケーション開発基礎技術(たぶん)

・プログラム開発言語の選択

 - 得意な応用領域

 - 機能的制約(型づけ、文法や予約語の有無、変数や演算の圏の一般性、変数の個数、

  変数のサイズ、変数や演算の圏の可読性を狙った制約、変数や演算の圏の可搬性を

  狙った制約)

 - サイズ的制約

 - ライブラリの充実度

 - リポジトリやコミュニティのワールドワイド展開性

 - 枯れてるゆえの安定度

 - シェアの大きさと将来性

 - 後発言語ゆえの洗練度

 

・パフォーマンスを考慮した設計

 ※ハードウェアの知識が不可欠

 ※コンパイラあるいはランタイム(インタプリタや仮想マシン)の知識が必要なことがある

 

・アルゴリズム

 ※プログラム開発言語の種類とある程度独立した知見として横たわっている

 

・ツール

 IDE

 テストツール

 リポジトリ操作

 

■課題を取り組むにあたっての方針

※点をいっぱい調べて点と点を繋げて線にしてさらに面にする

・バイブル書籍を読んで理解して覚える

 - ターゲットは基本設計書の各章を構成するひとつひとつの方式に関しての基本書

 - システムの中で産業の米のようにあっちこっちで頻出する要素技術の解説書

 - システムで頻出する主要コンポーネントについて一般的に解説してくれる入門書

 各プロダクトのマニュアルを読み込んで構築してみて機能確認する前に、技術領域の全

 体像を俯瞰し、いくつかのポイントを探る。

 各技術領域の主な存在意義と方式の種類

 各技術領域同士のつながり

 各技術領域を構成するコンポーネントの種類と役割とそれらどうしの連携方式

 - システム開発から運用保守までの全工程に関してそれぞれに関して詳細に解説してくれ

 る入門書


・プロダクト(コンポ―ネント)からの調査

エンタープライズITシステムを構成する各コンポーネント(ストレージ、ネットワークアプライアンス、サーバ、OS、仮想化ソフト、オーケストレーションツール、ミドルウェア、CI/CDツール、ユーティリティやツールなど)を種類ごとに分類し、同種のコンポーネント(たとえばAnsibleとChefとかprometheusとzabbixなど)のうち各種類(カテゴリー)ごとに主流(とおもわれる)コンポーネントを細部まで調査する(マニュアルを読んで調査項目を抽出する)。次に各種類に属する調査した以外のコンポーネント(プロダクト)も調べて差異、特徴、長短などについてまとめる。

※使ってるプロトコルから外部仕様を把握する

※どのハードウェア(cpu、メモリ、ストレージ、ネットワーク、あと稀にASICとかGPUなどのデバイスも)をどのような負荷を与えてレスポンス時間やスループットはどのくらいが見込まれるのか

※どのような特徴的なアルゴリズムがつかわれているのか?(全文検索エンジンとかウイルススキャナーとか画像変換ソフトとか)

※アルゴリズムの工夫点としてはHW性能の最適化、いたちごっこなセキュリティ処理がほとんど?稀に純粋に未開な領域として知能の人工化、科学法則模擬、科学的発見、工学的創造の補助などもあるかもねプニ。

※各要素技術や部品として使われている組み込みミドルウェア(DB、アプリケーションサーバなど)

※実装に使われているプログラム開発言語やフレームワーク

※システム要件としてどんなネイティブライブラリやランタイムや実装言語のライブラリが使われているのか

※実行方式(マスターデーモンプロセスと子プロセスや子スレッドの構成とそれぞれの役割や互いにやり取りするプロセス間通信(スレッドならメモリを共有)の種類

※連携している他のアプリケーション(リンクして実行されるライブラリではなくプロセス間通信しあう独立した別のプログラム(パッケージの粒度で)を想定)

 

・実際のエンタープライズITシステムの方式パターン収集

※できるだけ多くの案件を経験して実際に本番稼働しているシステムの方式のパターンを収集する

 

・システム内のモノリシック結合しているクリティカル技術にフォーカス

 - OSカーネル

 - ベンダロックインプロダクト

※モノリシックな理由・・・基本ソフトのエンジン部分の主にパフォーマンス最適化のため?

基本ソフトの場合、アプリケーションの様態が千差万別なため一般的かつ抽象的かつ万能である必要があるがこれを無理に分割して開発効率性や保守運用性を狙ってマイクロシステム化しようとするとかえって難しかったりする。数学も三角関数と指数関数という「全く別物」と思われる2つの概念が「なぜか」オイラーの法則でバチンとつながっちゃってたりする奇妙さを示す場合がある。一般性と万能性を狙って高度に抽象化されたシステムの場合、ブラッシュアップを重ねた結果「切っても切れない仲」になってる場合がある。

人間の思考や記憶の効率化のために人間は対象を抽象的具体的の違いに関わらず、「適当」に分割して部分に分けて、部分の中と部分同士のつながりという契機で扱う知恵をもっているが、この知恵にももしかしたら例外があるということなのかもしれない。

とはいっても分割(≒分析)をしないと対象を真に理解などできないんだけど。「無茶な」分割はかえって対象の本質に傷をつけかねないってことなのかもしれない。よくわかんないけど。

あとベンダロックインプロダクトは上記のような根源的かつ本質的なモノリシックではなく、アフォユーザにワンストップサービスや簡単構築や簡単運用の幻を見せつつ実際はベンダの帝国主義的独占化戦略の場合が多々あると思う。たぶんね。

 

----ここから20201218追記----

■遠大な課題

ここまでは「実務に直接効かない過大な課題」を掲げたが、実際に生きてくるのは実務で直接効いてくる知識である。

 

「実務に直接効かない知識」は実務をこなすうえでのベースとなる基礎であるが、

「実務で直接効いてくる知識」は実際に実務で直接使えるマニュアルやひな形にまで昇華された情報である。

具体的には、エンタープライズシステムの要件定義、方式設計、詳細設計、構築、単体テスト、および結合テストまでの各フェーズで直接使える情報を作成する。

・詳細設計フェーズ

選定したコンポーネントやプロダクトの機能を実現できる典型的なパラメータ設定例で埋めた推奨パラメータシートを各方式ごとに作成する。

コンポーネントやプロダクトによっては設定項目は膨大だが、デフォルト値も含めて曖昧なものを一切排除した完備なパラシを作成する。

さらに、方式や構成や機能の種類ごとにどのパラメータにどのような値を指定するのかがすべて書き込まれた遠大な自分用マニュアルを作成する。

※リファランスマニュアル等を隅々まで読んで上記を作成する。oracleDBサーバやpostgresqlの場合5000ページくらいあるけどねw

全部で100コンポ―ネント(プロダクト)について作成したら総ページ数が何十万ページのマニュアルを読解しないといけない。マニュアルだけではつかめない場合は実機で検証して確認してマニュアルに落とし込む。テヘペロ

・方式設計フェーズ

上記の詳細設計フェーズで何十万ページのマニュアルと実機検証を経て獲得した自分用マニュアルの知見をベースに、それぞれのコンポーネントやプロダクトを組み合わせてどのような方式が構成し得るかを知る。さらにある要件を実現するための方式は多くの場合複数あるはずなので各方式ごとの特徴、長短、および制約などをまとめた比較表を作成する。

・要件定義フェーズ

上記の方式設計フェーズで得られた知見から、「実現可能」な要件がうかがい知れる。

同時に上記の「実現可能」な要件以外は「実現不可能」な要件だと知りえる。たとえば人の知能を人工化したモジュールを組み込んで永久機関を発明し制御するというようなやつとか。

「実現可能」なシステムとそうでないシステムを仕分けられる知見をベースに、今現在世の中に存在する(あるいは近未来に現れそうな)エンタープライズ要件やこれらの要件を具体化するためのアプリケーションと連携して動作するシステムに求められる要件に応えるためのインフラ要件と条件を算定できるようなツールボックスを作成し完備する。

・構築フェーズ

実際に世の中に現在存在する(あるいは近未来に現れそうな)コンポーネントやプロダクトを設定しシステムを構築する際のナリッジをまとめる。大工さんならノコギリの使い方とかお医者さんなら心臓動脈の縫合の仕方とか。

・単体テストフェーズ

詳細設計項目をちゃんとテストできるための計画の立て方とテストの実行し方

・結合テストフェーズ

方式設計項目をちゃんとテストできるための計画の立て方とテストの実行し方

 

[centos7]$ ipa user-find | grep User
  User login: admin
  User login: dagyah
  User login: unkoman

→わかりやすくするためにユーザを上記3人以外は削除

[centos7]$ ldapsearch -D "cn=Directory Manager" -W -p 389 -h centos7.dagyah.com -b "cn=users,cn=accounts,dc=dagyah,dc=com"  | cat -n
Enter LDAP Password:Password123
     1  # extended LDIF
     2  #
     3  # LDAPv3
     4  # base <cn=users,cn=accounts,dc=dagyah,dc=com> with scope subtree
     5  # filter: (objectclass=*)
     6  # requesting: ALL
     7  #
     8
     9  # users, accounts, dagyah.com
    10  dn: cn=users,cn=accounts,dc=dagyah,dc=com
    11  objectClass: top
    12  objectClass: nsContainer
    13  cn: users
    14
    15  # admin, users, accounts, dagyah.com
    16  dn: uid=admin,cn=users,cn=accounts,dc=dagyah,dc=com
    17  objectClass: top
    18  objectClass: person
    19  objectClass: posixaccount
    20  objectClass: krbprincipalaux
    21  objectClass: krbticketpolicyaux
    22  objectClass: inetuser
    23  objectClass: ipaobject
    24  objectClass: ipasshuser
    25  objectClass: ipaSshGroupOfPubKeys
    26  uid: admin
    27  krbPrincipalName: admin@DAGYAH.COM
    28  cn: Administrator
    29  sn: Administrator
    30  uidNumber: 1942000000
    31  gidNumber: 1942000000
    32  homeDirectory: /home/admin
    33  loginShell: /bin/bash
    34  gecos: Administrator
    35  ipaUniqueID: 1a90ba88-21f4-11eb-94a7-000c297101eb
    36  memberOf: cn=admins,cn=groups,cn=accounts,dc=dagyah,dc=com
    37  memberOf: cn=Replication Administrators,cn=privileges,cn=pbac,dc=dagyah,dc=com
    38  memberOf: cn=Add Replication Agreements,cn=permissions,cn=pbac,dc=dagyah,dc=co
    39   m
    40  memberOf: cn=Modify Replication Agreements,cn=permissions,cn=pbac,dc=dagyah,dc
    41   =com
    42  memberOf: cn=Read Replication Agreements,cn=permissions,cn=pbac,dc=dagyah,dc=c
    43   om
    44  memberOf: cn=Remove Replication Agreements,cn=permissions,cn=pbac,dc=dagyah,dc
    45   =com
    46  memberOf: cn=Modify DNA Range,cn=permissions,cn=pbac,dc=dagyah,dc=com
    47  memberOf: cn=Read PassSync Managers Configuration,cn=permissions,cn=pbac,dc=da
    48   gyah,dc=com
    49  memberOf: cn=Modify PassSync Managers Configuration,cn=permissions,cn=pbac,dc=
    50   dagyah,dc=com
    51  memberOf: cn=Read LDBM Database Configuration,cn=permissions,cn=pbac,dc=dagyah
    52   ,dc=com
    53  memberOf: cn=Add Configuration Sub-Entries,cn=permissions,cn=pbac,dc=dagyah,dc
    54   =com
    55  memberOf: cn=Read DNA Range,cn=permissions,cn=pbac,dc=dagyah,dc=com
    56  memberOf: cn=Host Enrollment,cn=privileges,cn=pbac,dc=dagyah,dc=com
    57  memberOf: cn=System: Add krbPrincipalName to a Host,cn=permissions,cn=pbac,dc=
    58   dagyah,dc=com
    59  memberOf: cn=System: Enroll a Host,cn=permissions,cn=pbac,dc=dagyah,dc=com
    60  memberOf: cn=System: Manage Host Certificates,cn=permissions,cn=pbac,dc=dagyah
    61   ,dc=com
    62  memberOf: cn=System: Manage Host Enrollment Password,cn=permissions,cn=pbac,dc
    63   =dagyah,dc=com
    64  memberOf: cn=System: Manage Host Keytab,cn=permissions,cn=pbac,dc=dagyah,dc=co
    65   m
    66  memberOf: cn=System: Manage Host Principals,cn=permissions,cn=pbac,dc=dagyah,d
    67   c=com
    68  memberOf: cn=trust admins,cn=groups,cn=accounts,dc=dagyah,dc=com
    69  krbPrincipalKey:: MIHeoAMCAQGhAwIBAaIDAgEBowMCAQGkgccwgcQwaKAbMBmgAwIBBKESBBAp
    70   NSJbcywzSzp8SnE/MHVHoUkwR6ADAgESoUAEPiAAvZ3L9zbnBjRIEdmc8rNuTbn2WAKDhhVAyxlK6
    71   n8eBKwj2heXFPAh+9dGfYbWop5W7iekXSkrDXBvpuW9MFigGzAZoAMCAQShEgQQJWEpXj0vbVwvbG
    72   Q8YXg5OqE5MDegAwIBEaEwBC4QAFJBqHNiaJZwMi6hCnIY49nor1Q0r4TP6NNwIqo5bpZ2OxNwIIJ
    73   eVEx9Q8TO
    74  krbLastPwdChange: 20201108190307Z
    75  krbPasswordExpiration: 20210206190307Z
    76  userPassword:: e1NTSEE1MTJ9OGNNanZIWVkyZzZ6emFjR2RiZ2x4aFVnOEIweThSdVc5dGFsbEJ
    77   nOWhYNmRIeVlzSmhIZi9ZMk9Da0lHMEw2RzVoOVF4ZFg1bEIzM2pYdmVGS3FxZnE5aHhPODNJS0FB
    78  krbExtraData:: AALrQKhfcm9vdC9hZG1pbkBEQUdZQUguQ09NAA==
    79  krbLastFailedAuth: 20201126203958Z
    80  krbLoginFailedCount: 0
    81
    82  # dagyah, users, accounts, dagyah.com
    83  dn: uid=dagyah,cn=users,cn=accounts,dc=dagyah,dc=com
    84  displayName: da gyah
    85  uid: dagyah
    86  krbCanonicalName: dagyah@DAGYAH.COM
    87  objectClass: top
    88  objectClass: person
    89  objectClass: organizationalperson
    90  objectClass: inetorgperson
    91  objectClass: inetuser
    92  objectClass: posixaccount
    93  objectClass: krbprincipalaux
    94  objectClass: krbticketpolicyaux
    95  objectClass: ipaobject
    96  objectClass: ipasshuser
    97  objectClass: ipaSshGroupOfPubKeys
    98  objectClass: mepOriginEntry
    99  loginShell: /bin/sh
   100  initials: dg
   101  gecos: da gyah
   102  sn: gyah
   103  homeDirectory: /home/dagyah
   104  mail: dagyah@dagyah.com
   105  krbPrincipalName: dagyah@DAGYAH.COM
   106  givenName: da
   107  cn: da gyah
   108  ipaUniqueID: af08dc5c-3029-11eb-9d6c-000c297101eb
   109  uidNumber: 1942000005
   110  gidNumber: 1942000005
   111  mepManagedEntry: cn=dagyah,cn=groups,cn=accounts,dc=dagyah,dc=com
   112  memberOf: cn=ipausers,cn=groups,cn=accounts,dc=dagyah,dc=com
   113  userPassword:: e1NTSEE1MTJ9QVB3dUh1QTBlZ0xVZkNzZXBGbHBMKzNXRXBSeUhLOGszbzhwWHZ
   114   rU3ZhYTVkVEV5SlpHWkFSQ0FoazRUYjgyaTh3TVo2WUt6eU5xOVJ6blJDWjJvUnptejZSMWNzNWYv
   115  krbPrincipalKey:: MIHeoAMCAQGhAwIBAaIDAgECowMCAQGkgccwgcQwaKAbMBmgAwIBBKESBBB9
   116   QTZ9bDglSicrN1F0JmMloUkwR6ADAgESoUAEPiAAhqS225lY/ozGQ3vcYsmAkqu1V6MDmSwuMHmjx
   117   rPppDT9EsVn52S72ixEhHSO/oIuNCh9DGnwKjaMdnrAMFigGzAZoAMCAQShEgQQOyIyUSd7PUpOOl
   118   ZFOjo7IaE5MDegAwIBEaEwBC4QABhjjvFV9njjlwHSX162kRwnKWBzJy1JFlXqh1unMnfXhvKyVHt
   119   Dm3ZEMEQz
   120  krbPasswordExpiration: 20210224210931Z
   121  krbLastPwdChange: 20201126210931Z
   122  krbExtraData:: AAKLGcBfa2FkbWluZEBEQUdZQUguQ09NAA==
   123  krbTicketFlags: 128
   124  krbLoginFailedCount: 0
   125
   126  # unkoman, users, accounts, dagyah.com
   127  dn: uid=unkoman,cn=users,cn=accounts,dc=dagyah,dc=com
   128  displayName: unko man
   129  uid: unkoman
   130  krbCanonicalName: unkoman@DAGYAH.COM
   131  objectClass: top
   132  objectClass: person
   133  objectClass: organizationalperson
   134  objectClass: inetorgperson
   135  objectClass: inetuser
   136  objectClass: posixaccount
   137  objectClass: krbprincipalaux
   138  objectClass: krbticketpolicyaux
   139  objectClass: ipaobject
   140  objectClass: ipasshuser
   141  objectClass: ipaSshGroupOfPubKeys
   142  objectClass: mepOriginEntry
   143  loginShell: /bin/sh
   144  initials: um
   145  gecos: unko man
   146  sn: man
   147  homeDirectory: /home/unkoman
   148  mail: unkoman@dagyah.com
   149  krbPrincipalName: unkoman@DAGYAH.COM
   150  givenName: unko
   151  cn: unko man
   152  userPassword:: e1NTSEE1MTJ9TWRYbWRvWFowOTdrdm04SSt2SXZ2eHorVmJvUWx4VzMrSjNNNlN
   153   ObitvU0NCbnFaMzhBbmtFdDZwQ2dVSmpIWXNrSHJLOGVMYnNOM0QzYWZVMGc0ajE0T0w2cmJLZ0RK
   154  ipaUniqueID: 8c33a9ec-302d-11eb-9c5d-000c297101eb
   155  krbPrincipalKey:: MIHeoAMCAQGhAwIBAaIDAgECowMCAQGkgccwgcQwaKAbMBmgAwIBBKESBBAl
   156   OT9nTGhJUFQyS0BQUGFioUkwR6ADAgESoUAEPiAAUc9rCoEQgd4pjwZFXIvidm2Cks0FYXXRhZqAO
   157   /t9fat9fOVlkW6Ufw5Cprd896sdGTClCA0eykhGCEl3MFigGzAZoAMCAQShEgQQNmlEbERwPmwgLj
   158   d4Om9HRqE5MDegAwIBEaEwBC4QAK9VUDQWEan/9neSRJZD4u9+VWiAs0LmbbcQVFLudMB65QDyJMx
   159   aIxhbV5Tt
   160  uidNumber: 1942000006
   161  gidNumber: 1942000006
   162  krbPasswordExpiration: 20210224212532Z
   163  krbLastPwdChange: 20201126212532Z
   164  krbExtraData:: AAJMHcBfa2FkbWluZEBEQUdZQUguQ09NAA==
   165  mepManagedEntry: cn=unkoman,cn=groups,cn=accounts,dc=dagyah,dc=com
   166  memberOf: cn=ipausers,cn=groups,cn=accounts,dc=dagyah,dc=com
   167  krbTicketFlags: 128
   168  krbLoginFailedCount: 0
   169  krbLastFailedAuth: 20201126220839Z
   170  krbLastAdminUnlock: 20201126221855Z
   171
   172  # search result
   173  search: 2
   174  result: 0 Success
   175
   176  # numResponses: 5
   177  # numEntries: 4

 

[centos7]$ ldapsearch -D "cn=Directory Manager" -W -p 389 -h centos7.dagyah.com -b "dc=dagyah,dc=com"  | cat -n | grep unkoman
Enter LDAP Password:Password123
    19  # unkoman, users, compat, dagyah.com
    20  dn: uid=unkoman,cn=users,cn=compat,dc=dagyah,dc=com
    29  homeDirectory: /home/unkoman
    32  uid: unkoman
    74  # unkoman, groups, compat, dagyah.com
    75  dn: cn=unkoman,cn=groups,cn=compat,dc=dagyah,dc=com
    82  cn: unkoman
   492  member: uid=unkoman,cn=users,cn=accounts,dc=dagyah,dc=com
  8338  # unkoman, users, accounts, dagyah.com
  8339  dn: uid=unkoman,cn=users,cn=accounts,dc=dagyah,dc=com
  8341  uid: unkoman
  8342  krbCanonicalName: unkoman@DAGYAH.COM
  8359  homeDirectory: /home/unkoman
  8360  mail: unkoman@dagyah.com
  8361  krbPrincipalName: unkoman@DAGYAH.COM
  8377  mepManagedEntry: cn=unkoman,cn=groups,cn=accounts,dc=dagyah,dc=com
  8384  # unkoman, groups, accounts, dagyah.com
  8385  dn: cn=unkoman,cn=groups,cn=accounts,dc=dagyah,dc=com
  8390  cn: unkoman
  8392  description: User private group for unkoman
  8393  mepManagedBy: uid=unkoman,cn=users,cn=accounts,dc=dagyah,dc=com

[centos7]$ ldapsearch -D "cn=Directory Manager" -W -p 389 -h centos7.dagyah.com -b "uid=unkoman,cn=users,cn=compat,dc=dagyah,dc=com"  | cat -n
Enter LDAP Password:Password123
     1  # extended LDIF
     2  #
     3  # LDAPv3
     4  # base <uid=unkoman,cn=users,cn=compat,dc=dagyah,dc=com> with scope subtree
     5  # filter: (objectclass=*)
     6  # requesting: ALL
     7  #
     8
     9  # unkoman, users, compat, dagyah.com
    10  dn: uid=unkoman,cn=users,cn=compat,dc=dagyah,dc=com
    11  objectClass: posixAccount
    12  objectClass: ipaOverrideTarget
    13  objectClass: top
    14  gecos: unko man
    15  cn: unko man
    16  uidNumber: 1942000006
    17  gidNumber: 1942000006
    18  loginShell: /bin/sh
    19  homeDirectory: /home/unkoman
    20  ipaAnchorUUID:: OklQQTpkYWd5YWguY29tOjhjMzNhOWVjLTMwMmQtMTFlYi05YzVkLTAwMGMyOT
    21   cxMDFlYg==
    22  uid: unkoman
    23
    24  # search result
    25  search: 2
    26  result: 0 Success
    27
    28  # numResponses: 2
    29  # numEntries: 1

[centos7]$ ldapsearch -D "cn=Directory Manager" -W -p 389 -h centos7.dagyah.com -b "cn=unkoman,cn=groups,cn=compat,dc=dagyah,dc=com"  | cat -n
Enter LDAP Password:Password123
     1  # extended LDIF
     2  #
     3  # LDAPv3
     4  # base <cn=unkoman,cn=groups,cn=compat,dc=dagyah,dc=com> with scope subtree
     5  # filter: (objectclass=*)
     6  # requesting: ALL
     7  #
     8
     9  # unkoman, groups, compat, dagyah.com
    10  dn: cn=unkoman,cn=groups,cn=compat,dc=dagyah,dc=com
    11  objectClass: posixGroup
    12  objectClass: ipaOverrideTarget
    13  objectClass: top
    14  gidNumber: 1942000006
    15  ipaAnchorUUID:: OklQQTpkYWd5YWguY29tOjhjM2FhYTI2LTMwMmQtMTFlYi05YzVkLTAwMGMyOT
    16   cxMDFlYg==
    17  cn: unkoman
    18
    19  # search result
    20  search: 2
    21  result: 0 Success
    22
    23  # numResponses: 2
    24  # numEntries: 1

[centos7]$ ldapsearch -D "cn=Directory Manager" -W -p 389 -h centos7.dagyah.com -b "cn=unkoman,cn=groups,cn=accounts,dc=dagyah,dc=com"  | cat -n
Enter LDAP Password:Password123
     1  # extended LDIF
     2  #
     3  # LDAPv3
     4  # base <cn=unkoman,cn=groups,cn=accounts,dc=dagyah,dc=com> with scope subtree
     5  # filter: (objectclass=*)
     6  # requesting: ALL
     7  #
     8
     9  # unkoman, groups, accounts, dagyah.com
    10  dn: cn=unkoman,cn=groups,cn=accounts,dc=dagyah,dc=com
    11  objectClass: posixgroup
    12  objectClass: ipaobject
    13  objectClass: mepManagedEntry
    14  objectClass: top
    15  cn: unkoman
    16  gidNumber: 1942000006
    17  description: User private group for unkoman
    18  mepManagedBy: uid=unkoman,cn=users,cn=accounts,dc=dagyah,dc=com
    19  ipaUniqueID: 8c3aaa26-302d-11eb-9c5d-000c297101eb
    20
    21  # search result
    22  search: 2
    23  result: 0 Success
    24
    25  # numResponses: 2
    26  # numEntries: 1

 

 

IDM コマンドラインユーティリティー

・IdMサーバ起動

[centos7]$ ipactl start
Starting Directory Service
Starting krb5kdc Service
Starting kadmin Service
Starting named Service
Starting httpd Service
Starting ipa-custodia Service
Starting ntpd Service
Starting pki-tomcatd Service
Starting ipa-otpd Service
Starting ipa-dnskeysyncd Service
ipa: INFO: The ipactl command was successful

[centos7]$ ipactl status
Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
ipa-custodia Service: RUNNING
ntpd Service: RUNNING
pki-tomcatd Service: RUNNING
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful

IdMサーバ停止は

ipactl stop

[centos7]$ ipa --version
VERSION: 4.6.6, API_VERSION: 2.231

・IdMへのログイン

[centos7]$ klist
klist: Credentials cache keyring 'persistent:0:0' not found

[centos7]$ kinit admin
Password for admin@DAGYAH.COM:Password123
※OSユーザではなくIdMユーザでログインする

[centos7]$ klist
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@DAGYAH.COM

Valid starting       Expires              Service principal
11/26/2020 12:20:04  11/27/2020 12:19:58  krbtgt/DAGYAH.COM@DAGYAH.COM

※klistコマンドではキャッシュしたTGT(kerberosチケットが含まれる認証情報キャッシュ)を表示

※kerberosチケットが含まれる認証情報キャッシュを破棄するには

kdestroy

[centos7]$ ls -l ~admin
ls: cannot access /home/admin: No such file or directory

[centos7]$ id admin
uid=1942000000(admin) gid=1942000000(admins) groups=1942000000(admins)
[centos7]$ grep admin /etc/passwd;echo $?
1

・ipaユーザ確認

[centos7]$ ipa user-find
---------------
4 users matched
---------------
  User login: admin
  Last name: Administrator
  Home directory: /home/admin
  Login shell: /bin/bash
  Principal alias: admin@DAGYAH.COM
  UID: 1942000000
  GID: 1942000000
  Account disabled: False

  User login: dagyah1
  First name: dagyah
  Last name: one
  Home directory: /home/dagyah1
  Login shell: /bin/sh
  Principal name: dagyah1@DAGYAH.COM
  Principal alias: dagyah1@DAGYAH.COM
  Email address: dagyah1@dagyah.com
  UID: 1942000001
  GID: 1942000001
  Account disabled: False

  User login: dagyah2
  First name: dagyah
  Last name: two
  Home directory: /home/dagyah2
  Login shell: /bin/sh
  Principal name: dagyah2@DAGYAH.COM
  Principal alias: dagyah2@DAGYAH.COM
  Email address: dagyah2@dagyah.com
  UID: 1942000003
  GID: 1942000003
  Account disabled: False

  User login: dagyah3
  First name: dagyah
  Last name: three
  Home directory: /home/dagyah3
  Login shell: /bin/sh
  Principal name: dagyah3@DAGYAH.COM
  Principal alias: dagyah3@DAGYAH.COM
  Email address: dagyah3@dagyah.com
  UID: 1942000004
  GID: 1942000004
  Account disabled: False
----------------------------
Number of entries returned 4
----------------------------

・IdMからログアウト

[centos7]$ kdestroy
[centos7]$ klist

klist: Credentials cache keyring 'persistent:0:0' not found
[centos7]$ ipa user-find
ipa: ERROR: did not receive Kerberos credentials

 

・ipaヘルプがカバーしたトピックの一覧(user,cert,serverなど多数)の表示

[centos7]$ ipa help topics | cat
automember         Auto Membership Rule.
automount          Automount
ca                 Manage Certificate Authorities
caacl              Manage CA ACL rules.
cert               IPA certificate operations
certmap            Certificate Identity Mapping
certprofile        Manage Certificate Profiles
config             Server configuration
delegation         Group to Group Delegation
dns                Domain Name System (DNS)
domainlevel        Raise the IPA Domain Level.
group              Groups of users
hbac               Host-based access control commands
hbactest           Simulate use of Host-based access controls
host               Hosts/Machines
hostgroup          Groups of hosts.
idrange            ID ranges
idviews            ID Views
krbtpolicy         Kerberos ticket policy
location           IPA locations
migration          Migration to IPA
misc               Misc plug-ins
netgroup           Netgroups
otp                One time password commands
passwd             Set a user's password
permission         Permissions
ping               Ping the remote IPA server to ensure it is running.
pkinit             Kerberos PKINIT feature status reporting tools.
privilege          Privileges
pwpolicy           Password policy
radiusproxy        RADIUS Proxy Servers
realmdomains       Realm domains
role               Roles
schema             API Schema
selfservice        Self-service Permissions
selinuxusermap     SELinux User Mapping
server             IPA servers
serverrole         IPA server roles
service            Services
servicedelegation  Service Constrained Delegation
stageuser          Stageusers
sudo               commands for controlling sudo configuration
topology           Topology
trust              Cross-realm trusts
user               Users
vault              Vaults

※catに渡さないとlessで出力される。

 

・ipaヘルプでカバーされるコマンド(user-add,ca-enable,server-showなど多数)などのコマンドの一覧を表示

[centos7]$ ipa help commands | cat -n
     1  automember-add  Add an automember rule.
     2  automember-add-condition  Add conditions to an automember rule.
     3  automember-default-group-remove  Remove default (fallback) group for all unmatched entries.
     4  automember-default-group-set     Set default (fallback) group for all unmatched entries.
     5  automember-default-group-show    Display information about the default (fallback) automember groups.
     6  automember-del                   Delete an automember rule.
     7  automember-find                  Search for automember rules.
     8  automember-find-orphans          Search for orphan automember rules. The command might need to be run as
     9      a privileged user user to get all orphan rules.
    10  automember-mod                   Modify an automember rule.

----(略)----

   418  vault-find                             Search for vaults.
   419  vault-mod                              Modify a vault.
   420  vault-remove-member                    Remove members from a vault.
   421  vault-remove-owner                     Remove owners from a vault.
   422  vault-retrieve                         Retrieve a data from a vault.
   423  vault-show                             Display information about a vault.
   424  vaultconfig-show                       Show vault configuration.
   425  vaultcontainer-add-owner               Add owners to a vault container.
   426  vaultcontainer-del                     Delete a vault container.
   427  vaultcontainer-remove-owner            Remove owners from a vault container.
   428  vaultcontainer-show                    Display information about a vault container.

※catに渡さないとlessで出力される。

 

・ipaサブコマンドのヘルプ

 

[centos7]$ ipa help user-add | cat -n
     1  Usage: ipa [global-options] user-add LOGIN [options]
     2
     3  Add a new user.
     4  Options:
     5    -h, --help            show this help message and exit
     6    --first=STR           First name
     7    --last=STR            Last name
     8    --cn=STR              Full name
     9    --displayname=STR     Display name
    10    --initials=STR        Initials
    11    --homedir=STR         Home directory
    12    --gecos=STR           GECOS
    13    --shell=STR           Login shell
    14    --principal=PRINCIPAL
    15                          Principal alias
    16    --principal-expiration=DATETIME
    17                          Kerberos principal expiration
    18    --password-expiration=DATETIME
    19                          User password expiration
    20    --email=STR           Email address
    21    --password            Prompt to set the user password
    22    --random              Generate a random user password
    23    --uid=INT             User ID Number (system will assign one if not
    24                          provided)
    25    --gidnumber=INT       Group ID Number
    26    --street=STR          Street address
    27    --city=STR            City
    28    --state=STR           State/Province
    29    --postalcode=STR      ZIP
    30    --phone=STR           Telephone Number
    31    --mobile=STR          Mobile Telephone Number
    32    --pager=STR           Pager Number
    33    --fax=STR             Fax Number
    34    --orgunit=STR         Org. Unit
    35    --title=STR           Job Title
    36    --manager=STR         Manager
    37    --carlicense=STR      Car License
    38    --sshpubkey=STR       SSH public key
    39    --user-auth-type=['password', 'radius', 'otp']
    40                          Types of supported user authentication
    41    --class=STR           User category (semantics placed on this attribute are
    42                          for local interpretation)
    43    --radius=STR          RADIUS proxy configuration
    44    --radius-username=STR
    45                          RADIUS proxy username
    46    --departmentnumber=STR
    47                          Department Number
    48    --employeenumber=STR  Employee Number
    49    --employeetype=STR    Employee Type
    50    --preferredlanguage=STR
    51                          Preferred Language
    52    --certificate=CERTIFICATE
    53                          Base-64 encoded user certificate
    54    --setattr=STR         Set an attribute to a name/value pair. Format is
    55                          attr=value. For multi-valued attributes, the command
    56                          replaces the values already present.
    57    --addattr=STR         Add an attribute/value pair. Format is attr=value. The
    58                          attribute must be part of the schema.
    59    --noprivate           Don't create user private group
    60    --all                 Retrieve and print all attributes from the server.
    61                          Affects command output.
    62    --raw                 Print entries as stored on the server. Only affects
    63                          output format.
    64    --no-members          Suppress processing of membership attributes.

[centos7]$ ipa help user-del | cat -n
     1  Usage: ipa [global-options] user-del LOGIN... [options]
     2
     3  Delete a user.
     4  Options:
     5    -h, --help     show this help message and exit
     6    --continue     Continuous mode: Don't stop on errors.
     7    --preserve     Delete a user, keeping the entry available for future use
     8    --no-preserve  Delete a user

[centos7]$ ipa help user-mod | cat -n
     1  Usage: ipa [global-options] user-mod LOGIN [options]
     2
     3  Modify a user.
     4  Options:
     5    -h, --help            show this help message and exit
     6    --first=STR           First name
     7    --last=STR            Last name
     8    --cn=STR              Full name
     9    --displayname=STR     Display name
    10    --initials=STR        Initials
    11    --homedir=STR         Home directory
    12    --gecos=STR           GECOS
    13    --shell=STR           Login shell
    14    --principal=PRINCIPAL
    15                          Principal alias
    16    --principal-expiration=DATETIME
    17                          Kerberos principal expiration
    18    --password-expiration=DATETIME
    19                          User password expiration
    20    --email=STR           Email address
    21    --password            Prompt to set the user password
    22    --random              Generate a random user password
    23    --uid=INT             User ID Number (system will assign one if not
    24                          provided)
    25    --gidnumber=INT       Group ID Number
    26    --street=STR          Street address
    27    --city=STR            City
    28    --state=STR           State/Province
    29    --postalcode=STR      ZIP
    30    --phone=STR           Telephone Number
    31    --mobile=STR          Mobile Telephone Number
    32    --pager=STR           Pager Number
    33    --fax=STR             Fax Number
    34    --orgunit=STR         Org. Unit
    35    --title=STR           Job Title
    36    --manager=STR         Manager
    37    --carlicense=STR      Car License
    38    --sshpubkey=STR       SSH public key
    39    --user-auth-type=['password', 'radius', 'otp']
    40                          Types of supported user authentication
    41    --class=STR           User category (semantics placed on this attribute are
    42                          for local interpretation)
    43    --radius=STR          RADIUS proxy configuration
    44    --radius-username=STR
    45                          RADIUS proxy username
    46    --departmentnumber=STR
    47                          Department Number
    48    --employeenumber=STR  Employee Number
    49    --employeetype=STR    Employee Type
    50    --preferredlanguage=STR
    51                          Preferred Language
    52    --certificate=CERTIFICATE
    53                          Base-64 encoded user certificate
    54    --setattr=STR         Set an attribute to a name/value pair. Format is
    55                          attr=value. For multi-valued attributes, the command
    56                          replaces the values already present.
    57    --addattr=STR         Add an attribute/value pair. Format is attr=value. The
    58                          attribute must be part of the schema.
    59    --delattr=STR         Delete an attribute/value pair. The option will be
    60                          evaluated last, after all sets and adds.
    61    --rights              Display the access rights of this entry (requires
    62                          --all). See ipa man page for details.
    63    --all                 Retrieve and print all attributes from the server.
    64                          Affects command output.
    65    --raw                 Print entries as stored on the server. Only affects
    66                          output format.
    67    --no-members          Suppress processing of membership attributes.
    68    --rename=STR          Rename the user object

[centos7]$ ipa help user-find | cat -n
     1  Usage: ipa [global-options] user-find [CRITERIA] [options]
     2
     3  Search for users.
     4  Options:
     5    -h, --help            show this help message and exit
     6    --login=STR           User login
     7    --first=STR           First name
     8    --last=STR            Last name
     9    --cn=STR              Full name
    10    --displayname=STR     Display name
    11    --initials=STR        Initials
    12    --homedir=STR         Home directory
    13    --gecos=STR           GECOS
    14    --shell=STR           Login shell
    15    --principal=PRINCIPAL
    16                          Principal alias
    17    --principal-expiration=DATETIME
    18                          Kerberos principal expiration
    19    --password-expiration=DATETIME
    20                          User password expiration
    21    --email=STR           Email address
    22    --password            Prompt to set the user password
    23    --uid=INT             User ID Number (system will assign one if not
    24                          provided)
    25    --gidnumber=INT       Group ID Number
    26    --street=STR          Street address
    27    --city=STR            City
    28    --state=STR           State/Province
    29    --postalcode=STR      ZIP
    30    --phone=STR           Telephone Number
    31    --mobile=STR          Mobile Telephone Number
    32    --pager=STR           Pager Number
    33    --fax=STR             Fax Number
    34    --orgunit=STR         Org. Unit
    35    --title=STR           Job Title
    36    --manager=STR         Manager
    37    --carlicense=STR      Car License
    38    --user-auth-type=['password', 'radius', 'otp']
    39                          Types of supported user authentication
    40    --class=STR           User category (semantics placed on this attribute are
    41                          for local interpretation)
    42    --radius=STR          RADIUS proxy configuration
    43    --radius-username=STR
    44                          RADIUS proxy username
    45    --departmentnumber=STR
    46                          Department Number
    47    --employeenumber=STR  Employee Number
    48    --employeetype=STR    Employee Type
    49    --preferredlanguage=STR
    50                          Preferred Language
    51    --certificate=CERTIFICATE
    52                          Base-64 encoded user certificate
    53    --disabled=BOOL       Account disabled
    54    --preserved=BOOL      Preserved user
    55    --timelimit=INT       Time limit of search in seconds (0 is unlimited)
    56    --sizelimit=INT       Maximum number of entries returned (0 is unlimited)
    57    --whoami              Display user record for current Kerberos principal
    58    --all                 Retrieve and print all attributes from the server.
    59                          Affects command output.
    60    --raw                 Print entries as stored on the server. Only affects
    61                          output format.
    62    --pkey-only           Results should contain primary key attribute only
    63                          ("login")
    64    --in-groups=STR       Search for users with these member of groups.
    65    --not-in-groups=STR   Search for users without these member of groups.
    66    --in-netgroups=STR    Search for users with these member of netgroups.
    67    --not-in-netgroups=STR
    68                          Search for users without these member of netgroups.
    69    --in-roles=STR        Search for users with these member of roles.
    70    --not-in-roles=STR    Search for users without these member of roles.
    71    --in-hbacrules=STR    Search for users with these member of HBAC rules.
    72    --not-in-hbacrules=STR
    73                          Search for users without these member of HBAC rules.
    74    --in-sudorules=STR    Search for users with these member of sudo rules.
    75    --not-in-sudorules=STR
    76                          Search for users without these member of sudo rules.

[centos7]$ ipa help user-show | cat -n
     1  Usage: ipa [global-options] user-show LOGIN [options]
     2
     3  Display information about a user.
     4  Options:
     5    -h, --help    show this help message and exit
     6    --rights      Display the access rights of this entry (requires --all). See
     7                  ipa man page for details.
     8    --out=STR     file to store certificate in
     9    --all         Retrieve and print all attributes from the server. Affects
    10                  command output.
    11    --raw         Print entries as stored on the server. Only affects output
    12                  format.
    13    --no-members  Suppress processing of membership attributes.

 

・ユーザをIdMデータベースに追加

[centos7]$ ipa user-add
First name: da
Last name: gyah
User login [dgyah]: dagyah
-------------------
Added user "dagyah"
-------------------
  User login: dagyah
  First name: da
  Last name: gyah
  Full name: da gyah
  Display name: da gyah
  Initials: dg
  Home directory: /home/dagyah
  GECOS: da gyah
  Login shell: /bin/sh
  Principal name: dagyah@DAGYAH.COM
  Principal alias: dagyah@DAGYAH.COM
  Email address: dagyah@dagyah.com
  UID: 1942000005
  GID: 1942000005
  Password: False
  Member of groups: ipausers
  Kerberos keys available: False

[centos7]$ kdestroy
[centos7]$ kinit dagyah

kinit: Pre-authentication failed: Invalid argument while getting initial credentials

→adminで再びIdMにログイン

・IdMユーザにパスワード追加

[centos7]$ ipa user-mod dagyah --password
Password:Password123
Enter Password again to verify:Password123
----------------------
Modified user "dagyah"
----------------------
  User login: dagyah
  First name: da
  Last name: gyah
  Home directory: /home/dagyah
  Login shell: /bin/sh
  Principal name: dagyah@DAGYAH.COM
  Principal alias: dagyah@DAGYAH.COM
  Email address: dagyah@dagyah.com
  UID: 1942000005
  GID: 1942000005
  Account disabled: False
  Password: True
  Member of groups: ipausers
  Kerberos keys available: True

 

[centos7]$ id dagyah
uid=1000(dagyah) gid=1000(dagyah) groups=1000(dagyah)  ←同名ユーザがOS(/etc/passwdや/etc/shadow)にも居る
[centos7]$ kdestroy
[centos7]$ kinit dagyah

Password for dagyah@DAGYAH.COM:Password123
Password expired.  You must change it now.password123
Enter new password:password123
Enter it again:
[centos7]$ klist
Ticket cache: KEYRING:persistent:0:0
Default principal: dagyah@DAGYAH.COM

Valid starting       Expires              Service principal
11/26/2020 13:09:31  11/27/2020 13:09:31  krbtgt/DAGYAH.COM@DAGYAH.COM

 

・コマンドラインからIdMユーザとパスワードを同時かつ非対話式に追加

※上記のように「dagyah」アカウントのまま実行してみる

[centos7]$ ipa user-show dagyah
  User login: dagyah
  First name: da
  Last name: gyah
  Home directory: /home/dagyah
  Login shell: /bin/sh
  Principal name: dagyah@DAGYAH.COM
  Principal alias: dagyah@DAGYAH.COM
  Email address: dagyah@dagyah.com
  UID: 1942000005
  GID: 1942000005
  Account disabled: False
  Password: True
  Member of groups: ipausers
  Kerberos keys available: True

[centos7]$ ipa user-show admin
  User login: admin
  Last name: Administrator
  Home directory: /home/admin
  Login shell: /bin/bash
  Principal alias: admin@DAGYAH.COM
  UID: 1942000000
  GID: 1942000000
  Account disabled: False
  Password: True
  Member of groups: admins, trust admins
  Kerberos keys available: True

[centos7]$ ipa user-add --first=unko --last=man --password
User login [uman]: unkoman
Password:Password123
Enter Password again to verify:Password123
ipa: ERROR: Insufficient access: Could not read UPG Definition originfilter. Check your permissions.

[centos7]$ ipa user-find unko
---------------
0 users matched
---------------
----------------------------
Number of entries returned 0
----------------------------

・adminでログインしなおしてユーザ追加

[centos7]$ kinit admin
Password for admin@DAGYAH.COM:Password123
[centos7]$ klist
Ticket cache: KEYRING:persistent:0:krb_ccache_gAEaY1x
Default principal: admin@DAGYAH.COM

Valid starting       Expires              Service principal
11/26/2020 13:20:38  11/27/2020 13:20:32  krbtgt/DAGYAH.COM@DAGYAH.COM

[centos7]$ ipa user-add --first=unko --last=man --password
User login [uman]: unkoman
Password:Password123
Enter Password again to verify:Password123
--------------------
Added user "unkoman"
--------------------
  User login: unkoman
  First name: unko
  Last name: man
  Full name: unko man
  Display name: unko man
  Initials: um
  Home directory: /home/unkoman   ←ホームディレクトリもつくられた?
  GECOS: unko man
  Login shell: /bin/sh
  Principal name: unkoman@DAGYAH.COM
  Principal alias: unkoman@DAGYAH.COM
  User password expiration: 20201126212253Z
  Email address: unkoman@dagyah.com
  UID: 1942000006
  GID: 1942000006
  Password: True
  Member of groups: ipausers
  Kerberos keys available: True

[centos7]$ ls -ld /home/unkoman
ls: cannot access /home/unkoman: No such file or directory

→つくられず

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:Password123
Password expired.  You must change it now.
Enter new password:password123
Enter it again:password123
[centos7]$ klist
Ticket cache: KEYRING:persistent:0:krb_ccache_94MeLP1
Default principal: unkoman@DAGYAH.COM

Valid starting       Expires              Service principal
11/26/2020 13:25:32  11/27/2020 13:25:32  krbtgt/DAGYAH.COM@DAGYAH.COM

[centos7]$ id unkoman
uid=1942000006(unkoman) gid=1942000006(unkoman) groups=1942000006(unkoman)
[centos7]$ kdestroy
Other credential caches present, use -A to destroy all
[centos7]$ kdestroy -A
[centos7]$ klist

klist: Credentials cache keyring 'persistent:0:krb_ccache_94MeLP1' not found
[centos7]$ id unkoman
uid=1942000006(unkoman) gid=1942000006(unkoman) groups=1942000006(unkoman)
[centos7]$ ipactl stop
Stopping ipa-dnskeysyncd Service
Stopping ipa-otpd Service
Stopping pki-tomcatd Service
Stopping ntpd Service
Stopping ipa-custodia Service
Stopping httpd Service
Stopping named Service
Stopping kadmin Service
Stopping krb5kdc Service
Stopping Directory Service
ipa: INFO: The ipactl command was successful

[centos7]$ id unkoman
uid=1942000006(unkoman) gid=1942000006(unkoman) groups=1942000006(unkoman)

[centos7]$ systemctl disable ipa

[centos7]$ systemctl reboot 

----(数分待つ)----

[centos7]$ systemctl status ipa
● ipa.service - Identity, Policy, Audit
   Loaded: loaded (/usr/lib/systemd/system/ipa.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

[centos7]$ netstat -naptl | grep 389;echo $?

1
[centos7]$ id unkoman
uid=1942000006(unkoman) gid=1942000006(unkoman) groups=1942000006(unkoman)

→どこかにキャッシュされている?

[centos7]$ grep unkoman /etc/passwd;echo $?
1

まあいいか。

 

・アカウントロック

[centos7]$ ipa pwpolicy-show --user=unkoman
  Group: global_policy
  Max lifetime (days): 90
  Min lifetime (hours): 1
  History size: 0
  Character classes: 0
  Min length: 8
  Max failures: 6
  Failure reset interval: 60
  Lockout duration: 600

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:1
kinit: Password incorrect while getting initial credentials
[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:1
kinit: Password incorrect while getting initial credentials

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:1
kinit: Password incorrect while getting initial credentials

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:1
kinit: Password incorrect while getting initial credentials

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:1
kinit: Password incorrect while getting initial credentials

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:1
kinit: Password incorrect while getting initial credentials

[centos7]$ kinit unkoman
kinit: Client's credentials have been revoked while getting initial credentials

[centos7]$ kinit admin
Password for unkoman@DAGYAH.COM:Password123
[centos7]$ ipa user-show unkoman --all
  dn: uid=unkoman,cn=users,cn=accounts,dc=dagyah,dc=com
  User login: unkoman
  First name: unko
  Last name: man
  Full name: unko man
  Display name: unko man
  Initials: um
  Home directory: /home/unkoman
  GECOS: unko man
  Login shell: /bin/sh
  Principal name: unkoman@DAGYAH.COM
  Principal alias: unkoman@DAGYAH.COM
  User password expiration: 20210224212532Z
  Email address: unkoman@dagyah.com
  UID: 1942000006
  GID: 1942000006
  Account disabled: False
  Preserved user: False
  Password: True
  Member of groups: ipausers
  Kerberos keys available: True
  ipauniqueid: 8c33a9ec-302d-11eb-9c5d-000c297101eb
  krbextradata: AAJMHcBfa2FkbWluZEBEQUdZQUguQ09NAA==
  krblastfailedauth: 20201126220839Z
  krblastpwdchange: 20201126212532Z
  krbloginfailedcount: 6
  krbticketflags: 128
  mepmanagedentry: cn=unkoman,cn=groups,cn=accounts,dc=dagyah,dc=com
  objectclass: top, person, organizationalperson, inetorgperson, inetuser, posixaccount, krbprincipalaux, krbticketpolicyaux, ipaobject, ipasshuser, ipaSshGroupOfPubKeys, mepOriginEntry

[centos7]$ ipa user-unlock unkoman
--------------------------
Unlocked account "unkoman"
--------------------------

[centos7]$ ipa user-show unkoman --all
----(略)----
  krbloginfailedcount: 0
----(略)----

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:password123
[centos7]$ klist
Ticket cache: KEYRING:persistent:0:krb_ccache_q2IjbVy
Default principal: unkoman@DAGYAH.COM

Valid starting       Expires              Service principal
11/26/2020 14:21:00  11/27/2020 14:20:55  krbtgt/DAGYAH.COM@DAGYAH.COM

・IdMユーザ無効化

adminでログイン

[centos7]$ kinit admin
Password for admin@DAGYAH.COM:Password123
[centos7]$ klist
Ticket cache: KEYRING:persistent:0:krb_ccache_rw9ULDN
Default principal: admin@DAGYAH.COM
----(略)----

[centos7]$ ipa user-disable unkoman
-------------------------------
Disabled user account "unkoman"
-------------------------------

[centos7]$ ipa user-show unkoman
  User login: unkoman
  First name: unko
  Last name: man
  Home directory: /home/unkoman
  Login shell: /bin/sh
  Principal name: unkoman@DAGYAH.COM
  Principal alias: unkoman@DAGYAH.COM
  Email address: unkoman@dagyah.com
  UID: 1942000006
  GID: 1942000006
  Account disabled: True
  Password: True
  Member of groups: ipausers
  Kerberos keys available: True

[centos7]$ kinit unkoman
kinit: Client's credentials have been revoked while getting initial credentials

[centos7]$ ipa user-enable unkoman
------------------------------
Enabled user account "unkoman"
------------------------------

[centos7]$ ipa user-show unkoman

  User login: unkoman
----(略)----
  Account disabled: False
----(略)----

[centos7]$ kinit unkoman
Password for unkoman@DAGYAH.COM:password123
[centos7]$ klist
Ticket cache: KEYRING:persistent:0:krb_ccache_q2IjbVy
Default principal: unkoman@DAGYAH.COM

----(略)----