이미 가지고 있는 PowerShell을, 가드레일을 갖춘 셀프서비스로.
RealmJoin은 엄선한 175개의 Runbook 라이브러리를 자체 Azure Automation 계정에 동기화하고, 스크립트마다 폼을 만들며, 누가 무엇을 실행할 수 있는지 정합니다. 모든 작업은 로그를 남깁니다.
- 오픈소스 Runbook 175개
- 자체 Azure 구독에서 실행
- 대상 그룹 단위까지 나뉘는 권한
- 매월 추가되는 새 Runbook
직접 쓰지 않아도 되는 Runbook 175개
라이브러리는 GitHub에 오픈소스로 공개되어 있습니다. RealmJoin이 이를 자체 Automation 계정에 동기화하고, 매월 나오는 새 릴리스에 맞춰 최신 상태로 유지하며, 직접 만든 Runbook도 그 옆에서 함께 실행합니다.
| Runbook |
|---|
| 예약 실행Cleanup Autopilot devices |
| 예약 실행Delete stale devices |
| 예약 실행Auto-approve driver updates |
| 예약 실행Notify users about low disk space |
| 예약 실행Report devices without primary user |
| 예약 실행Report expiring application credentials |
| 예약 실행Monitor pending EPM requests |
| 예약 실행Sync MFA-secure users to group |
| Backup Conditional Access policies |
| Notify changed CA policies |
| List inactive users |
| Invite external guest users |
| Add shared mailbox |
| Export all Intune devices |
| Check SharePoint and OneDrive status |
| Offboard user permanently |
| Offboard user temporarily |
| Create temporary access pass |
| Reset MFA |
| Revoke or restore access |
| Confirm or dismiss risky user |
| Convert to shared mailbox |
| Delegate full access |
| Set out of office |
| Set Teams Phone |
| Assign Windows 365 |
| Resize Windows 365 |
| Check Intune enrollment readiness |
| Assign groups by template |
| List sign-in events |
| Wipe device |
| Outphase device |
| Rename device |
| Set primary user |
| Wipe managed app data |
| Check device compliance |
| Isolate or release device |
| Restrict or release code execution |
| Check Defender status |
| Show BitLocker recovery key |
| Show FileVault recovery key |
| Show LAPS password |
| Reset mobile device PIN |
| Toggle drain mode |
| Restart host |
| Add or remove user |
| Add or remove owner |
| Add or remove nested group |
| Rename group |
| Change visibility |
| List all members |
| List user devices |
| Remove group |
| Enable or disable external mail |
| Show or hide in address book |
| Archive team |
| 예약 실행Unenroll updatable assets |
범위별로 일부 Runbook만 보여 줍니다. 조직, Runbook 96개: General 39, Devices 19, Security 15, Mail 10, Applications 9, Collaboration 3, Phone 1.
사용자, Runbook 43개: Mail 13, General 12, Security 9, Phone 5, User info 3, AVD 1.
디바이스, Runbook 22개: General 12, Security 8, AVD 2.
그룹, Runbook 14개: General 9, Mail 2, Devices 2, Teams 1.
GitHub에서 동기화
기본값은
production브랜치이며,rjgit-접두사가 붙고, 라이브러리에 맞춰 추가와 갱신, 삭제가 이루어집니다.모듈 자동 처리
필요한 모듈은 스크립트마다 읽어 들여 PowerShell Gallery에서 종속성까지 함께 설치합니다.
관리형 런타임
Az와 Azure CLI를 갖춘 PowerShell 7.4 환경을 자체 Automation 계정에 구성합니다.
스스로 만들어지는 폼
RealmJoin은 스크립트마다 매개변수 블록과 주석 기반 도움말을 읽습니다. Use-RJInterface 주석은 매개변수를 Microsoft Graph와 연동된 사용자, 그룹, 디바이스 피커나 숫자, 날짜, 텍스트 필드, 또는 테넌트 설정으로 바꿉니다. ValidateSet은 드롭다운이 됩니다.
- 필수 항목은 작업을 시작하기 전에 확인
- 테넌트별로 어떤 항목이든 숨기거나 이름을 바꾸고, 순서를 조정하거나 기본값 지정
- 조건 규칙: 한 가지를 고르면 다른 항목이 바뀜
- 감사 추적을 위해 실행한 사람의 이름이 함께 전달됨
RealmJoin이 스크립트에서 만들어 내는 화면입니다. 설명을 위해 라이브러리 Runbook 두 개의 매개변수를 합쳐 두었습니다.
param ( [Parameter(Mandatory = $true)] [ValidateScript( { Use-RJInterface -Type Graph -Entity User -DisplayName "User" } )] [String] $UserName, [ValidateScript( { Use-RJInterface -Type Graph -Entity User -DisplayName "Who should step in as group/resource owner?" } )] [String] $ReplacementOwnerName, [bool] $ReplaceManagerReferences = $false, [ValidateSet("WhatIf (report only)", "Delete")] [string] $DeleteMode = "WhatIf (report only)")
무엇을 누가 실행할 수 있는지, 대상 단위까지
Runbook 권한은 테넌트마다 JSON 문서 하나로 관리합니다. 역할은 Entra 그룹에 연결되고, 이름 패턴으로 Runbook을 허용합니다. 대상 그룹으로 역할을 더 좁힐 수 있어서, 1차 지원 담당자가 스웨덴의 로컬 관리자 암호만 볼 수 있고 다른 곳은 볼 수 없게 만들 수 있습니다. 예약 실행에는 별도의 허용 패턴과 거부 패턴이 있습니다.
- 와일드카드로 계열 전체를 한 번에 허용하거나 차단
- Runbook 단위뿐 아니라 대상 그룹 단위로도 역할을 제한
- 주석과 끝쉼표를 허용해 읽기 좋은 상태 유지
{ "EnabledRunbookPatterns": [ "rjgit-*_mail_*", "rjgit-*_security_*" ], "DisabledRunbookPatterns": [ "*password*" ], "Roles": { "LAPSAdmin": { "Groups": [ /* CFG - RealmJoin Admin */ "724c288d-…" ], "AllowedRunbookPatterns": [ "rjgit-*_security_*" ] }, "DeviceAdmin": { "Groups": [ /* Sweden Supporters */ "52fcd199-…" ], "AllowedRunbookPatterns": [ "rjgit-device_*" ] } }, "TargetEntityGroups": { /* Sweden Users: LAPS only for Sweden Supporters */ "ca03f227-…": { "RestrictRoles": { "LAPSAdmin": [ "52fcd199-…" ] } } }, "SchedulingDisabledRunbookPatterns": [ "rjgit-device_*" ]}
자사 표준 시간대에 맞춘 일정
시간, 일, 주, 월 단위 일정이 테넌트 표준 시간대로 미리 준비되어 있고, 직접 추가할 수도 있습니다.
- 예약 작업과 수동 실행 작업을 나란히 표시
- Runbook 패턴별로 예약 실행 허용 또는 차단
무인 실행을 전제로 만든 Runbook
라이브러리의 Runbook 34개가 여기에 해당합니다. 정리 작업과 보고서 생성, 모니터링처럼 사람이 직접 시작할 필요가 없는 일들입니다.
- 보고서를 메일 또는 기한이 있는 다운로드 링크로 전달
- 예약 실행은 모두 작업 이력과 자체 Log Analytics 워크스페이스에 기록
온프레미스까지 Preview
파일 공유, Active Directory 특성, 레거시 앱처럼 아직 온프레미스에 남아 있는 작업도 있습니다. 이름이 _hybrid로 끝나는 Runbook은 사내 네트워크의 Hybrid Runbook Worker 그룹에서 실행할 수 있습니다. 실행할 때 워커 그룹을 고르기만 하면 되고, 나머지는 똑같습니다.
미리 보기 기간에는 RealmJoin 스테이징 포털에서 사용할 수 있습니다.
단계별로 배포하고 결과를 측정하는 수정 스크립트 라이브러리
RealmJoin은 엄선한 Intune 수정 스크립트를 공개 GitHub 저장소에서 매일 밤 동기화합니다. 스크립트를 구독해 단계별로 준비한 뒤 일정에 따라 관리 그룹에 배포하고, 디바이스별 탐지 결과와 수정 결과를 확인하면 됩니다. 특정 PC에서 당장 실행해야 할 때는 디바이스 페이지에서 바로 실행할 수 있습니다.
- 미관리, 관리, 준비, 배포, 지원 중단 상태를 한눈에
- 탐지 스크립트와 수정 스크립트를 나란히 확인
- 원본에서 삭제된 스크립트도 사용 중이면 그대로 유지
그 밖의 요청을 위한 양식
모든 요청이 Runbook으로 처리되는 것은 아닙니다. 셀프서비스 양식은 번역 파일이 딸린 JSON 스키마로 만들고, 직원에게는 사내 양식으로 표시되며, 제출 내용은 메일이나 웹훅으로, 예를 들어 ITSM 도구나 Teams 플로로 전달됩니다. 모든 응답은 이력으로 보관됩니다.
- 번역 파일을 통한 다국어 지원
- 양식마다 수신 메일 주소와 선택적 웹훅 설정
- 관리자용 양식 이력, 사용자 페이지의 응답 내역
어디서든 Runbook 실행
Customer API는 Runbook을 동기 방식이나 백그라운드로 실행하고, 작업 상태와 출력 텍스트, 출력 스트림, 예외를 반환합니다. ITSM에서는 퇴사 처리를 요청한 티켓에서 바로 처리할 수 있습니다.
실행 후 대기
작업이 끝나면 결과를 돌려주는 동기 호출로, 한 시간 이내 작업에 적합합니다.
백그라운드 실행
작업 ID를 즉시 반환하며, 상태는 필요할 때 조회합니다.
작업 상태
대기, 실행 중, 완료, 실패.
출력
일반 출력 텍스트 또는 전체 출력 스트림.
예외
작업이 실패했을 때의 예외 텍스트.
야간 로그 내보내기
완료된 작업은 23:00에 자체 Log Analytics 워크스페이스로 들어갑니다. Customer API 레퍼런스
스크립트 폴더는 이제 그만.
Azure Automation을 연결하고 라이브러리를 동기화한 다음, 적절한 가드레일을 걸어 첫 Runbook을 헬프데스크에 넘기세요.