Linux でサービス アカウントの Active Directory パスワードを変更する

Linux でサービス アカウントの Active Directory パスワードを変更する

私はこの機能が初めてですが、Kerberosを使用してCentOS 7システムでActive Directoryサービスアカウントを認証し、sqlcmdを使用してリモートデータベースでクエリを実行しようとしています。

より多くのコンテキストを提供するために私が取り組んでいるPythonコードのいくつかは次のとおりです。

import subprocess

kinit = ['kinit', '[email protected]', '-k', '-t', '/usr/local/var/krb5kdc/serviceaccount.keytab']
kinit_cl = subprocess.Popen(kinit, stdout=subprocess.PIPE)
kinit_output = kinit_cl.stdout.read()

klist = ['klist','-l']
klist_cl = subprocess.Popen(klist, stdout=subprocess.PIPE)
klist_output = klist_cl.stdout.read()
print klist_output

if 'KEYRING:persistent' in klist_output:
    print "Service Account Authenticated"
    #proceed to run sqlcmd queries

私の質問は、私の資格情報が保存されているキータブの管理に関連しています。私のパスワードはプレーンテキストとして保存されないので大丈夫です。しかし、パスワードは30日ごとに期限切れになり、パスワードコマンドラインでパスワードを変更するには、古いパスワードの入力を求められます。つまり、パスワードをどこかに保存して明示的な方法で渡す必要がありますが、パスワードを知らず、スクリプトにパスワードを管理するようにしておくことをお勧めします。

Pythonで新しい強力なパスワードを生成することは問題ではありません。私の質問は、以前のパスワードを要求せずにパスワードを変更するためにどのコマンドを使用できるかです。から命令を受けるkadmin.localパスワードが変更されたというメッセージが表示されますが、許可されたパスワードはまだ古いパスワードです。カミンサービス アカウントを管理者としてローカル ファイルに追加しても、次のエラーが発生します。

[root@osboxes krb5kdc]# kadmin.local -q "addprinc serviceaccount/admin"
Authenticating as principal serviceaccount/[email protected] with password.
WARNING: no policy specified for serviceaccount/[email protected]; 
defaulting to no policy
Enter password for principal "serviceaccount/[email protected]": 
Re-enter password for principal "serviceaccount/[email protected]": 
Principal "serviceaccount/[email protected]" created.
[root@osboxes krb5kdc]# kinit serviceaccount/admin
kinit: Client 'serviceaccount/[email protected]' not found in Kerberos database while getting initial credentials
[root@osboxes krb5kdc]# kadmin serviceaccount
kadmin: Client 'serviceaccount/[email protected]' not found in Kerberos database while initializing kadmin interface

ただ合格する必要がありますか?カミン?このスクリプトをどうやって書きますか?

ベストアンサー1

おすすめ記事