Advanced (更新: 2026/7/19)

制作会社の社内DXでEntra ID権限レビューを進める: 退職者、共有アカウント、棚卸し

制作会社のEntra IDで退職者、共有アカウント、グループ権限を棚卸しします。

制作会社の社内DXでEntra ID権限レビューを進める: 退職者、共有アカウント、棚卸し

制作会社の社内DX担当が月末にMicrosoft 365のユーザー一覧を開くと、退職済みデザイナーのアカウントがまだ有効で、SNS投稿用の共有アカウントには所有者が空欄のまま残っている。Figma、広告管理、クライアント共有フォルダ、Teamsの外部ゲストがつながったままだと、納品後の情報漏れや棚卸しの手戻りになります。今日まず見るのは、Entra IDのユーザー一覧、グループ、サインインログです。

この記事では、制作会社や小規模会社の社内DX担当が、Claude Codeを使ってMicrosoft Entra IDの権限レビューを始める手順を書きます。狙いは「AIに削除させる」ことではありません。退職者、共有アカウント、古いグループ、外部ゲスト、管理者ロールを表にして、人が止める判断を残すことです。

この記事の要点

  • 制作会社の権限棚卸しは、ユーザー、グループ、アプリ、共有アカウント、ゲストを分けて見る。
  • Microsoft Entraのaccess reviewsは、グループやアプリへのアクセスを定期的に確認する仕組みとして使える。
  • audit logsとsign-in logsは、誰が変更したか、誰が最近使ったかを見る入口になる。
  • 退職者処理はLifecycle workflowsの考え方を参考にできるが、削除やライセンス解除は人が承認する。
  • 成果は、残存アカウント件数、所有者不明の共有アカウント数、30日以上未使用の権限数、棚卸し対応時間で見る。

現場で起きる失敗シーン

制作会社の社内DXでは、入退社、業務委託、外部パートナー、クライアント案件ごとのゲスト招待が混ざります。Notion、Figma、GitHub、広告管理、Microsoft 365、請求ツール、ファイル共有を同じ担当者がまとめて見ることもあります。忙しい月末に「この人、まだアクセスできますか」と聞かれると、ユーザー一覧、Teams、グループ、アプリ割り当てを順番に開くことになります。

失敗しやすいのは、退職者だけを探して終わる流れです。共有アカウント、クライアント用グループ、古い外部ゲスト、管理者ロール、未使用アプリの割り当てが残ると、後から「誰が承認したのか」が分からなくなります。棚卸しの目的は、削除件数を増やすことではなく、残す理由と責任者を残すことです。

参考にした一次情報は、Microsoft Entra access reviews overviewcreate access reviewsaudit logssign-in logsLifecycle workflows offboardingsharing accounts and credentialssecurity defaultsです。Microsoft Learnでも、レビュー、ログ、退職者処理、共有アカウントは別の章に分かれているため、記事でも分けて見ます。

業務フロー: ユーザー一覧から棚卸し表へ落とす

社内DX担当が最初に見る具体物は、Entra IDのユーザー一覧、グループ一覧、Enterprise apps、サインインログ、監査ログです。ここからCSVを出し、退職日、所属、最終サインイン、グループ、アプリ、管理者ロール、共有アカウントの所有者を1枚の棚卸し表にします。

Claude Codeに渡す前に、個人情報をそのまま入れません。氏名、メール、クライアント名はサンプルIDへ置き換えます。AIに見せるのは、状態、日付、ロール、グループ、所有者の有無、最終利用日です。人が見る表には実名を残しても、AIレビュー用の表は匿名化します。

見る場所Claude Codeに任せる点人が見る点
ユーザー一覧退職日、accountEnabled、部署退職済みで有効な行の抽出本当に退職済みか
グループclient-a-share、design-admin所有者、未使用、外部ゲスト案件継続、契約
Enterprise appsFigma、広告管理、請求ツール共有アカウント、割り当て漏れライセンス、業務必要性
sign-in logs最終サインイン、失敗回数30日以上未使用の候補休職、出向、例外
audit logs変更者、変更日時いつ誰が追加したか承認経路

この表があると、Claude Codeは「削除候補」ではなく「確認候補」を出せます。退職者で有効なアカウント、所有者不明の共有アカウント、30日以上使われていないグループ、管理者ロールを持つ古いアカウントを分けて並べます。

Claude Codeに任せる範囲と人が見る範囲

Claude Codeに任せる範囲は、棚卸しCSVの整形、ルール違反候補の抽出、レビュー表の列設計、グループ所有者への確認文面、月次レビューのチェックリストです。CSVやログの列名を読ませ、条件に合う行を表にします。

人が見る範囲は、削除、無効化、ライセンス解除、管理者ロール削除、外部ゲスト削除、共有アカウントの扱い、break glassアカウントです。特に管理者ロールと非常用アカウントは、最終サインインだけで消すと危険です。人が承認し、監査ログに残る形で処理します。

Microsoft Entraのaccess reviewsは、グループやアプリのアクセスを定期的に見直すための仕組みです。小さな会社でも、いきなり全社レビューにせず、まずは「クライアント共有グループ」「SNS共有アカウント」「管理者ロール」の3つだけを対象にすると始めやすいです。

3つのUse case

Use case 1: 退職者アカウントの残りを見つける

  • 入力: ユーザー一覧、退職日、accountEnabled、最終サインイン、所属、ライセンス。
  • 出力: 退職済みで有効なアカウント、残っているグループ、アプリ割り当て、確認先。
  • 人の確認: 退職日、業務委託継続、メール転送、法務保存、削除承認を見る。

退職者レビューで最初に見るのは、削除ではなく「有効なまま残っている理由」です。Claude Codeには、退職日が過ぎているのにaccountEnabledがtrueの行を出させます。人は、休職、再雇用、業務委託、訴訟対応、メール保存などの例外を確認します。

Use case 2: 共有アカウントの所有者を決める

  • 入力: 共有アカウント一覧、アプリ名、所有者、MFA、最終サインイン、利用部署。
  • 出力: 所有者不明、MFAなし、長期利用、権限過多の共有アカウント表。
  • 人の確認: 本当に共有が必要か、個人アカウントやアプリ割り当てへ移せるかを見る。

制作会社では、SNS投稿、広告管理、検証端末、旧SaaSで共有アカウントが残りがちです。Microsoft Learnには、Microsoft Entraでpassword-based SSOを使った共有アカウントの考え方があります。直接パスワードを回すのではなく、アプリ割り当てと所有者を見える形にします。

Use case 3: グループとアプリの棚卸しを月次で回す

  • 入力: グループ一覧、アプリ割り当て、所有者、外部ゲスト、最終利用日、案件終了日。
  • 出力: access review対象、オーナー確認文、残す理由、削除候補、次回レビュー日。
  • 人の確認: 案件継続、契約、クライアント都合、管理者ロール、監査要件を見る。

月次棚卸しで全部を同じ日に見ると続きません。まず、クライアント共有グループ、外部ゲスト、管理者ロールの3種類だけを選びます。Claude Codeには、レビュー対象を表にし、オーナーへ送る確認文を作らせます。人は、承認結果だけを残します。

コピペで使えるプロンプト

あなたは制作会社のMicrosoft Entra ID権限レビュー担当です。
目的は、退職者、共有アカウント、古いグループ、外部ゲスト、管理者ロールを棚卸しし、削除や無効化を人が判断できる表に変える流れです。

入力:
- 匿名化したユーザー一覧CSV
- グループ一覧CSV
- Enterprise appsの割り当てCSV
- sign-in logsの最終サインイン日
- audit logsの変更履歴
- 退職日と案件終了日の一覧

確認してほしいこと:
1. 退職日を過ぎても有効なアカウント
2. 所有者が空欄の共有アカウント
3. MFAなし、または強い認証がない共有アカウント
4. 30日以上使われていないグループやアプリ割り当て
5. 管理者ロールを持つ古いアカウント
6. 外部ゲストが残るクライアント共有グループ
7. 人が承認しないと進めてはいけない操作

制約:
- 実名、メール、クライアント名はサンプルIDへ置き換える
- 削除、無効化、ライセンス解除は提案だけにする
- break glassアカウントは自動削除候補にしない
- 最後に、今日見るべき5行だけを優先順で出す

動く確認コード

次のコードは、Entra ID棚卸し表の危ない行を見つける小さな確認コードです。実データではなくサンプルです。実行すると、退職済みで有効なアカウント、所有者不明の共有アカウント、MFAなし、古い管理者アカウントを表で出します。

// verify-entra-access-review.mjs
// No dependencies. Run with: node verify-entra-access-review.mjs
const accounts = [
  {
    userPrincipalName: "[email protected]",
    department: "design",
    employeeLeaveDate: "2026-06-30",
    accountEnabled: true,
    lastSignInDaysAgo: 2,
    groups: ["client-a-share", "figma-admin"],
    roles: [],
    mfa: true,
    owner: "manager-01"
  },
  {
    userPrincipalName: "[email protected]",
    department: "marketing",
    employeeLeaveDate: null,
    accountEnabled: true,
    lastSignInDaysAgo: 1,
    groups: ["social-media-tools"],
    roles: [],
    mfa: false,
    owner: ""
  },
  {
    userPrincipalName: "[email protected]",
    department: "it",
    employeeLeaveDate: null,
    accountEnabled: true,
    lastSignInDaysAgo: 120,
    groups: [],
    roles: ["Global Administrator"],
    mfa: false,
    owner: "it-lead"
  }
];

const problems = [];
const today = new Date("2026-07-19T00:00:00Z");

for (const account of accounts) {
  if (account.employeeLeaveDate && new Date(account.employeeLeaveDate + "T00:00:00Z") < today && account.accountEnabled) {
    problems.push({ account: account.userPrincipalName, item: "leaver still enabled", fix: "disable account or run the approved offboarding workflow" });
  }
  if (account.userPrincipalName.includes("shared") && !account.owner) {
    problems.push({ account: account.userPrincipalName, item: "shared account owner", fix: "assign an accountable owner and review app assignment" });
  }
  if (account.userPrincipalName.includes("shared") && !account.mfa) {
    problems.push({ account: account.userPrincipalName, item: "shared account MFA", fix: "replace direct password sharing with controlled app access or strong authentication" });
  }
  if (account.roles.length > 0 && account.lastSignInDaysAgo > 90) {
    problems.push({ account: account.userPrincipalName, item: "stale privileged account", fix: "review role need, sign-in logs, and break-glass policy" });
  }
  if (account.groups.length > 0 && account.lastSignInDaysAgo > 30) {
    problems.push({ account: account.userPrincipalName, item: "group access review", fix: "ask the group owner to approve, deny, or remove access" });
  }
}

if (problems.length > 0) {
  console.table(problems);
  process.exitCode = 1;
} else {
  console.log("Entra ID access review checklist passed.");
}

このコードで見ているのは、退職日、accountEnabled、共有アカウントの所有者、MFA、管理者ロール、最終サインインです。実運用では、Entra admin center、audit logs、sign-in logs、access reviews、Lifecycle workflows、社内承認ログを合わせて確認します。まずは匿名化したCSVで同じ列を作ってください。

Pitfall: よくある落とし穴

Entra IDの棚卸しで一番多い落とし穴は、最終サインインだけで削除候補を決める流れです。原因は、休職、非常用、バックアップ、年次業務、外部連携の例外を見落とす点です。直し方は、最終サインイン、所有者、ロール、退職日、案件終了日を同じ表で見て、人が承認する列を置くことです。

二つ目は、共有アカウントを「誰も使っていないはず」で放置する流れです。原因は、所有者と利用アプリが表にない点です。直し方は、所有者、利用アプリ、認証方法、期限、代替案を1行に並べます。

三つ目は、外部ゲストをグループ単位で見ないことです。原因は、ユーザー一覧だけを見ると、どの案件に紐づくアクセスか分からないためです。直し方は、クライアント共有グループごとにownerへ確認を出します。

四つ目は、AIに削除判断まで任せることです。Claude Codeには候補の抽出と確認文を任せます。削除、無効化、ロール解除、ライセンス解除は人が承認します。

よくある質問

Q. Entra IDの棚卸しは何から始めればよいですか。

A. 今日まず、退職日を過ぎても有効なアカウント、所有者がない共有アカウント、管理者ロールを持つ古いアカウントの3つだけを見ます。全部を一度に見ようとすると続きません。

Q. access reviewsは小さな会社にも必要ですか。

A. 全社で一気に始める必要はありません。クライアント共有グループ、外部ゲスト、管理者ロールのように、漏れると痛い場所から始めます。

Q. 共有アカウントは全部禁止ですか。

A. すぐにゼロにできない会社もあります。まず、所有者、利用アプリ、認証方法、期限を見える形にします。Microsoft Entraのpassword-based SSOやアプリ割り当てで、直接パスワード共有を減らす候補を出します。

Q. Claude CodeにCSVを渡して大丈夫ですか。

A. 実名、メール、クライアント名、電話番号、契約情報は渡しません。user-001、client-a、group-01のように置き換え、条件だけを見させます。

研修・相談につなげるなら何を見るか

制作会社のEntra ID記事から相談へ進めるなら、PVだけでは判断しません。残存アカウント件数、所有者不明の共有アカウント数、30日以上未使用のグループ数、外部ゲストの残り件数、棚卸し対応時間、面談問い合わせ率を見ます。ここが見えると、権限レビュー、退職者処理、共有アカウント整理をまとめて相談する理由があります。

Microsoft Entra IDのaccess reviews、audit logs、sign-in logs、Lifecycle workflows、共有アカウントの扱いを社内運用に落としたい場合は、ClaudeCodeLabの研修・相談で相談できます。まずはユーザー一覧を匿名化し、この記事の確認コードで5つの問題候補を洗い出してください。

実際に試した結果

この記事では、Microsoft Learnのaccess reviews、create access review、audit logs、sign-in logs、Lifecycle workflows、sharing accounts、security defaultsを確認しました。さらに、slug、frontmatter、内部リンク、外部リンク、CTA、コードブロック、10言語ファイル、記事キューの削除対象を確認しています。今日まずやる1手は、匿名化したユーザー一覧で、退職日、accountEnabled、所有者、MFA、最終サインインをチェックする作業です。

#claude-code #制作会社 #Entra ID #権限レビュー #退職者管理
無料

無料PDF: Claude Code はじめてのチートシート

まずは無料PDFで基本コマンドと最初の使い方をまとめて確認してください。登録後はそのままテンプレート集や導入相談にも進めます。

スパムは送りません。登録情報は厳重に管理します。

Claude Codeを仕事で使える形にしませんか?

まず無料PDFで基本を固め、繰り返し使う作業はGumroad教材へ、チーム導入や権限設計は導入相談へ進めます。

Masa

この記事を書いた人

Masa

Claude Codeの実務活用、導入設計、収益導線改善を検証しているエンジニア。10言語の技術メディアを運営中。

PR

関連書籍・参考図書

この記事のテーマに関連する書籍を楽天ブックスで探せます。

※ 当サイトは楽天市場のアフィリエイトプログラムに参加しています。上記リンクから商品をご購入いただくと、運営者に紹介料が支払われる場合があります。