본문으로 건너뛰기

관리자를 위한 MDM 설정

RedirectWeb은 Apple의 Managed App Configuration을 지원하여, IT 관리자가 Jamf, Intune, Kandji 등과 같은 모바일 기기 관리(MDM) 솔루션을 통해 직원이나 학생의 기기 전체에 앱 설정을 중앙에서 배포하고 관리할 수 있도록 합니다.

이 페이지에서는 구성 가능한 키, 앱 동작, 권장 사항 및 제한 사항에 대해 설명합니다.

개요

정보

Apple Business Manager / Apple School Manager (VPP) 배포 관련: 표준 RedirectWeb 앱은 프리미엄 인앱 결제(freemium In-App Purchase) 모델을 사용하며, 이는 VPP 대량 구매에 적합하지 않습니다. 조직에 모든 기능이 해제된 앱을 배포하려면, MDM/VPP 배포를 위해 특별히 설계된 유료 버전인 RedirectWeb Pro 앱을 구매하시기 바랍니다.

MDM을 통해 구성을 푸시함으로써 다음과 같은 작업을 수행할 수 있습니다:

  • 강제 규칙(Enforced Rules): 사용자가 수정하거나 삭제할 수 없는 조직 전체의 리다이렉션 규칙을 적용합니다.
  • 초기 규칙 배포: 앱 처음 실행 시 기본값으로 사용될 템플릿 규칙 세트를 배포합니다.
  • UI 제어: 특정 기능(라이브러리 등)에 대한 액세스를 제한하고, 앱이 조직 관리 하에 있음을 앱 내에 명확하게 표시합니다.
  • 대규모 규칙 가져오기(Fallback): 외부 서버에서 규칙을 가져와 MDM 페이로드 크기 제한을 우회합니다.

활용 사례

  • 시스템 마이그레이션 중 원활한 라우팅: 레거시 내부 시스템(예: legacy-crm.internal.local)에서 새로운 플랫폼(예: salesforce.com)으로 마이그레이션할 때, enforcedRuleSet을 배포하십시오. 직원이 이전 북마크를 사용하더라도 자동으로 새 시스템으로 리다이렉션되어 오래된 링크와 관련된 IT 지원 티켓을 줄일 수 있습니다.
  • 인트라넷 액세스 지원: Omnissa Web과 같은 앱별 VPN 터널을 통해 인트라넷 리소스에 쉽게 액세스할 수 있도록 커스텀 URL 스킴을 사용하는 리다이렉션 규칙을 배포합니다.
경고

MDM 구성 푸시는 사용자가 RedirectWeb 앱을 열 때만 즉시 적용됩니다. 앱은 백그라운드 작업을 사용하여 MDM 업데이트를 브라우저 확장 프로그램에 자동으로 푸시하지만, 이는 OS에 의해 제어되는 "최선 노력(best-effort)" 실행 방식입니다. 실행 타이밍은 매우 예측하기 어려우며 작업이 아예 실행되지 않을 수도 있습니다. 따라서 클라우드 서비스 중단 시 몇 분 내에 모든 직원을 백업 사이트로 즉시 리다이렉션하려는 시도와 같이 시간이 중요한 장애 대응에는 이 기능에 의존해서는 안 됩니다.

데모

동영상에서 사용된 plist 파일은 Dictionary (<dict>) 키를 사용하는 sample-mdm.plist로 제공됩니다. 또한 동일한 데이터를 JSON 문자열 키로 사용하는 sample-mdm-json-string.plist도 있습니다.

동영상에서는 ManageEngine의 MDM을 사용하여 구성을 배포했지만, Apple의 Managed App Configuration을 지원하는 다른 MDM 솔루션에서도 동일한 구성을 사용할 수 있습니다.

노트

Dictionary vs. JSON 문자열: Dictionary 유형이 더 타입 안정성이 높지만, 일부 MDM 솔루션(예: Omnissa Workspace ONE UEM)은 관리형 앱 구성에서 Dictionary 유형을 지원하지 않습니다. 이러한 경우 해결 방법으로 JSON 문자열 유형을 사용하는 것이 권장됩니다.

구성 가능한 키

일반적으로 plist 형식으로 MDM 콘솔을 통해 Managed App Configuration용 다음 키와 값을 배포하십시오.

키 이름유형설명
enforcedRuleSet규칙 세트일반 규칙보다 높은 우선순위로 적용되는 규칙 세트입니다. 목록의 첫 번째 규칙이 우선권을 가집니다. 사용자는 이 규칙을 편집, 삭제 또는 재정렬할 수 없습니다. 앱의 글로벌 비활성화 토글과 관계없이 항상 활성 상태이며 iCloud를 통해 동기화되지 않습니다.
enforcedRuleSetJSONStringJSON 문자열enforcedRuleSet과 동일하지만, 규칙 세트가 원시 JSON 문자열로 제공됩니다. 이는 관리형 앱 구성에서 Dictionary 유형을 지원하지 않는 MDM 플랫폼에 유용합니다.
prefilledRuleSet규칙 세트기존 규칙이 없는 사용자가 앱을 처음 실행할 때 기본 예제 규칙 대신 생성되는 규칙 세트입니다. 일단 배포되면 일반 규칙으로 작동하여 사용자가 수정, 삭제 및 iCloud 동기화를 할 수 있습니다.
prefilledRuleSetJSONStringJSON 문자열prefilledRuleSet과 동일하지만, 규칙 세트가 원시 JSON 문자열로 제공됩니다. 이는 관리형 앱 구성에서 Dictionary 유형을 지원하지 않는 MDM 플랫폼에 유용합니다.
organizationNameString앱 내 설정 화면 상단에 "Managed by [organizationName]"을 표시하여 사용자에게 앱이 관리되고 있음을 알립니다.
managedConfigVersionString구성에 대한 임의의 버전 문자열입니다. UI에 표시되어 문제 해결 시 IT 지원팀이 최신 MDM 페이로드가 기기에 도달했는지 확인할 수 있도록 합니다.
showsLibrarySectionBooleanfalse로 설정하면 규칙 라이브러리 기능이 숨겨지고 해당 섹션이 "조직에 의해 제한됨" 오류 메시지로 대체됩니다.
fallbackFallbackMDM 페이로드 크기 제한을 초과하는 경우 이를 지정하십시오. 앱은 fallbackDataURL에 지정된 URL에서 구성을 가져옵니다.
fallbackJSONStringJSON 문자열fallback과 동일하지만, 대체 구성이 원시 JSON 문자열로 제공됩니다. 이는 관리형 앱 구성에서 Dictionary 유형을 지원하지 않는 MDM 플랫폼에 유용합니다.

이 키들은 모두 선택 사항입니다.

구성 값 유형

규칙 세트

각 규칙 객체는 앱을 통해 공유/내보내기할 수 있는 것과 동일한 형식이지만, 다음과 같이 JSON에서 plist로 변환해야 합니다:

...
<key>enforcedRuleSet</key>
<dict>
<key>kind</key>
<string>RedirectList</string>
<key>bundleID</key>
<string>io.github.mshibanami.RedirectWebForSafari</string>
<key>formatVersion</key>
<string>5</string>
<key>redirects</key>
<array>
<dict>
<key>kind</key>
<string>Redirect</string>
<key>type</key>
<string>originalRedirect</string>
<key>title</key>
<string>My enforced Rule</string>
<key>sourceURLPattern</key>
<dict>
<key>type</key>
<string>wildcard</string>
<key>value</key>
<string>https://example.com/1</string>
</dict>
<key>destinationURLPattern</key>
<string>https://google.com/search?q=1</string>
</dict>
</array>
</dict>
...

Fallback

키 이름유형설명
fallbackDataURLString (URL)규칙 세트가 포함된 JSON/XML 파일의 엔드포인트 URL입니다.
authTokenStringfallbackDataURL에서 가져올 때 HTTP 헤더에 추가되는 인증 토큰입니다. (Authorization: Bearer [authToken] 형식으로 사용됨).

JSON 문자열

일부 MDM 플랫폼(예: Omnissa Workspace ONE UEM)은 관리형 앱 구성에서 Dictionary (<dict>) 유형을 지원하지 않습니다. 이 문제를 해결하기 위해 JSONString으로 끝나는 키(enforcedRuleSetJSONString, prefilledRuleSetJSONString, fallbackJSONString 등)는 Dictionary 키와 동일한 데이터를 받지만, plist <string> 요소 내에 원시 JSON 문자열로 인코딩되어야 합니다.

JSON 문자열은 다음 예제와 같이 가독성을 위해 줄 바꿈과 들여쓰기를 포함하거나 압축할 수 있습니다.

...
<key>enforcedRuleSetJSONString</key>
<string>{
"kind": "RedirectList",
"bundleID": "io.github.mshibanami.RedirectWebForSafari",
"formatVersion": "5",
"redirects": [
{
"kind": "Redirect",
"type": "originalRedirect",
"title": "My enforced Rule",
"sourceURLPattern": {
"type": "wildcard",
"value": "https://example.com/1"
},
"destinationURLPattern": "https://google.com/search?q=1"
}
]
}</string>
...
노트

Dictionary 키와 해당 JSONString 키가 모두 존재하는 경우(예: enforcedRuleSetenforcedRuleSetJSONString 모두), Dictionary 키가 우선순위를 가집니다.

규칙 평가 및 충돌 해결

  1. enforcedRuleSet이 제공되면 해당 규칙이 절대적인 우선순위로 적용됩니다.
  2. 일반 규칙은 없지만 prefilledRuleSet이 존재하는 경우, prefilledRuleSet이 일반 규칙으로 저장됩니다.
  3. 기본 "예제 리다이렉션 규칙"은 MDM 규칙이 구성되지 않고 일반 규칙도 없는 경우에만 생성됩니다.

Fallback URL 동작

인라인 MDM 페이로드와 fallbackDataURL을 통해 가져온 데이터 모두에 키가 존재하는 경우, 앱은 다음과 같이 충돌을 처리합니다:

  • 가져오기 완료 전: 인라인 설정이 엄격하게 우선순위를 가지며 사용됩니다.
  • 가져오기 성공 후: fallbackDataURL에서 검색된 데이터가 해당 인라인 설정을 덮어씁니다.
  • 가져오기 실패 후: 앱은 계속해서 인라인 설정을 사용합니다.
  • 독립적인 키: 인라인 페이로드에만 존재하는 키는 항상 유지됩니다.

MDM 피드백 및 상태 확인

MDM 솔루션이 지원하는 경우 MDM 피드백 채널(com.apple.feedback.managed)을 통해 구성이 성공적으로 적용되었는지 확인할 수 있습니다. 구성 처리(또는 URL 가져오기 완료) 후 앱은 다음 데이터를 반환합니다:

  • managedConfigVersion: 구성 시도의 버전 문자열입니다.
  • result: success 또는 error 중 하나입니다.
  • messages: 해당하는 경우 상세한 오류 또는 경고 메시지를 포함하는 배열입니다.