コンテンツにスキップ

LDAP の変更操作

Active Directory object の属性変更は、LDAP modify operation として表現できます。ldapmodify は LDIF(LDAP Data Interchange Format)で add、delete、replace を明示できるため、SPN や委任属性のような multi-valued attribute を扱うときに変更内容を記録しやすいです。

操作意味注意点
add属性値を追加する。multi-valued attribute では既存値を維持したまま追加できる。
delete属性値を削除する。値を指定するとその値だけ削除。属性名だけだと属性全体削除になる。
replace属性値を置き換える。multi-valued attribute では指定値以外を消すため、既存値の控えが必須。

servicePrincipalName のような multi-valued attribute では、必要な値だけを delete / add する方が安全です。replace は全体置換になるため、既存 SPN を壊しやすくなります。

次は HTTP/web01.example.local を WEB01$ から DC01$ へ移す例です。実環境では DN と SPN を必ず現在値から確認します。

dn: CN=WEB01,OU=Servers,DC=example,DC=local
changetype: modify
delete: servicePrincipalName
servicePrincipalName: HTTP/web01.example.local
-
dn: CN=DC01,OU=Domain Controllers,DC=example,DC=local
changetype: modify
add: servicePrincipalName
servicePrincipalName: HTTP/web01.example.local
-

復元用 LDIF は逆向きに作ります。

dn: CN=DC01,OU=Domain Controllers,DC=example,DC=local
changetype: modify
delete: servicePrincipalName
servicePrincipalName: HTTP/web01.example.local
-
dn: CN=WEB01,OU=Servers,DC=example,DC=local
changetype: modify
add: servicePrincipalName
servicePrincipalName: HTTP/web01.example.local
-
  • delete と add を明示でき、何を変更したかが LDIF として残る。
  • multi-valued attribute の必要な値だけを操作できる。
  • 実行前レビューと復元用 LDIF の作成がしやすい。
  • GUI や独自 tool より、変更単位が LDAP operation として見えやすい。

一方で、AD 固有の validation や安全策を補助してくれるとは限りません。SPN なら setspn -Q / setspn -X で重複確認し、通常運用では setspn -S のような専用 tool も検討します。

  • 対象 object の DN が正しいか。
  • 対象 attribute の現在値を控えたか。
  • multi-valued attribute に対して replace を使っていないか。
  • SPN 重複や delegation 影響を確認したか。
  • LDAPS、LDAP signing、認証方式など、環境のセキュリティ要件を満たしているか。
  • DC replication の遅延を考慮しているか。
  • rollback 用 LDIF を作成したか。
エラー主な意味
Insufficient access rights対象 object または attribute への write 権限がない。
No such attribute削除しようとした値または属性が存在しない。
Type or value exists追加しようとした値が既に存在する。
Constraint violationAD 側の制約、重複、形式不正などに抵触している。
Strong(er) authentication requiredsigning/LDAPS など、より強い認証保護が要求されている。