「さはら3」です。
AI副業でどこまでいけるのか?をテーマに頑張っていきたいと思います。
頭の体操
- 1か所だけ異なる漢字が入っています。(解答は一番最後に掲載)
本編
本日は、業務的なスクリプトになります。
Active Directoryの特定のOUのコンピュータ一覧
本業で、Active Directoryの特定のOUに所属しているコンピュータオブジェクトの一覧が必要になりました。
今までは、Powershellで出したりをしていましたが、Pythonの方が速そうだったので、ChatGPTさんに聞いてみました。
補足1(ActiviDirectoryとは)
ActiveDirectory(アクティブディレクトリ)は、Microsoftが開発したディレクトリサービスで、Windows Serverオペレーティングシステムに組み込まれています。
ディレクトリサービス:ActiveDirectoryは、ネットワーク上のリソース(ユーザー、コンピュータ、プリンタなど)に関する情報を格納し、管理するためのデータベースです。
ドメインコントローラ:ActiveDirectoryの情報は、ドメインコントローラと呼ばれる専用のサーバーに格納されます。これにより、ユーザー認証やリソースへのアクセス制御が行われます。
ツリーとフォレスト:ActiveDirectoryの構造は、ドメイン、ツリー、フォレストという階層的な構造を持っています。複数のドメインをまとめてツリーを形成し、複数のツリーをまとめてフォレストを形成します。
グループポリシー:ActiveDirectoryを使用すると、グループポリシーを通じてユーザーやコンピュータの設定を一元的に管理することができます。
LDAP:ActiveDirectoryは、情報の検索やアクセスのためのプロトコルとしてLDAP(Lightweight Directory Access Protocol)をサポートしています。
セキュリティ:ActiveDirectoryは、Kerberos認証プロトコルを使用して、ユーザーやリソースへのアクセスを安全に管理します。
簡潔に言えば、ActiveDirectoryは、企業や組織のITインフラストラクチャを効率的に管理するためのツールとして、ユーザー管理、リソース管理、ポリシーの適用などの機能を提供しています。
補足2(OUとは)
OU(Organizational Unit、組織単位)は、ActiveDirectory(AD)内でオブジェクトを階層的に整理するためのコンテナです。
階層的な構造:OUは、ユーザー、グループ、コンピュータ、その他のADオブジェクトを階層的に整理するために使用されます。
グループポリシーの適用:OUは、特定のグループポリシーをそのOUに含まれるオブジェクトに適用するためのスコープとして使用されます。これにより、異なる部門やチームごとに異なるポリシーを適用することができます。
オブジェクトの管理:OUを使用すると、特定の部門やチームの管理者が、そのOUに関連するオブジェクトのみを管理することができます。これにより、管理の負担を分散させることができます。
柔軟な設計:OUは、組織のニーズや要件に応じて、任意の階層構造で設計することができます。
簡潔に言えば、OUはActiveDirectoryの構造を整理し、効率的なオブジェクト管理とポリシーの適用を実現するための重要なコンポーネントです。
Amazon アソシエイト
サンプルプログラム
- 事前準備(ldap3パッケージのインストール)
pip install ldap3
from ldap3 import Server, Connection, ALL, SUBTREE # Active Directoryの設定 server_name = 'your_ad_server_name_or_ip' domain_name = 'your_domain_name' username = 'your_username' password = 'your_password' base_ou = 'ou=YourTargetOU,dc=example,dc=com' # ここに対象のOUを指定 # LDAPサーバーへの接続 server = Server(server_name, get_info=ALL) conn = Connection(server, user=f"{domain_name}\\{username}", password=password, authentication='NTLM') if not conn.bind(): print("Error: Could not bind to the server.") exit() # コンピュータオブジェクトの検索 search_filter = '(objectClass=computer)' conn.search(base_ou, search_filter, SUBTREE, attributes=['cn', 'distinguishedName']) # 結果をテキストファイルに保存 with open('computers_with_ou.txt', 'w') as file: for entry in conn.entries: computer_name = entry.cn.value distinguished_name = entry.distinguishedName.value # OUの部分を抽出 ou = ','.join([part for part in distinguished_name.split(',') if 'OU=' in part]) file.write(f"{computer_name} - {ou}\n") print("コンピュータの一覧とそのOUが computers_with_ou.txt に保存されました。") # 接続の終了 conn.unbind()
→今回は、具体的なプログラムではなく、サンプルプログラムとなります事をご了承ください。
解説
ldap3のインポート
from ldap3 import Server, Connection, ALL, SUBTREE
Active Directoryへ接続するための準備(会社の環境によって異なります。)
# Active Directoryの設定 server_name = 'your_ad_server_name_or_ip' domain_name = 'your_domain_name' username = 'your_username' password = 'your_password' base_ou = 'ou=YourTargetOU,dc=example,dc=com' # ここに対象のOUを指定
- 事前にActiviDirectory管理者へ作業実施可否の確認をお願いいたします。
前項の情報を使用し、LDAPサーバーへの接続
# LDAPサーバーへの接続 server = Server(server_name, get_info=ALL) conn = Connection(server, user=f"{domain_name}\\{username}", password=password, authentication='NTLM') if not conn.bind(): print("Error: Could not bind to the server.") exit()
コンピュータオブジェクトの検索
# コンピュータオブジェクトの検索 search_filter = '(objectClass=computer)' conn.search(base_ou, search_filter, SUBTREE, attributes=['cn', 'distinguishedName'])
結果をテキストファイルに保存
# 結果をテキストファイルに保存 with open('computers_with_ou.txt', 'w') as file: for entry in conn.entries: computer_name = entry.cn.value distinguished_name = entry.distinguishedName.value # OUの部分を抽出 ou = ','.join([part for part in distinguished_name.split(',') if 'OU=' in part]) file.write(f"{computer_name} - {ou}\n") print("コンピュータの一覧とそのOUが computers_with_ou.txt に保存されました。")
接続の終了
# 接続の終了
conn.unbind()
解説と言っておきながら、殆どコメントを記載しただけという手抜きでした、、、
Amazon アソシエイト
実施結果
私の職場の環境では、Powershellスクリプトで同じことを実施した場合には、2~3分程度かかっておりました。
今回のPyhonスクリプトでは、数秒で終わるという大分効率化が図れたともいます。
ActiveDirectory全体の棚卸を実施する機会があるので、今度は全体のOU配下のコンピュータオブジェクトの一覧を出してみようと思います。
(その結果は特に報告は致しません。)
まとめ
Python速い!!
という結果に終わりました。
AI関連は日進月歩、日々之精進でございます。
最後まで読んで頂きありがとうございました。
AIさはら
頭の体操:解答
- わかりましたか?
本日のAI着物美女
良かったらInstagramのフォローをお願いします。
https://www.instagram.com/ai_kimono_bijo/
非アダルトで運営しておりますので、職場でも安心して堪能いただけます。