Android용 Intune 앱 SDK - MAM 통합 필수 사항

Android용 Microsoft Intune 앱 SDK를 사용하면 Intune 앱 보호 정책(MAM 정책이라고도 함)을 네이티브 Java/Kotlin Android 앱에 통합할 수 있습니다. Intune 관리 애플리케이션은 Intune 앱 SDK와 통합된 애플리케이션입니다. Intune 관리자는 Intune에서 앱을 적극적으로 관리할 때 Intune 관리 앱에 앱 보호 정책을 쉽게 배포할 수 있습니다.

참고

이 가이드는 여러 단계로 나뉩니다. 먼저 1단계: 통합 계획을 검토합니다.

4단계: MAM 통합 기본 사항

스테이지 목표

  • MAM 엄격 모드를 사용하도록 설정합니다.
  • SDK에서 중요한 알림을 받으려면 등록합니다.
  • 인증 콜백을 구현하고 등록하여 MSAL에서 SDK로 Microsoft Entra 토큰을 제공합니다.
  • MSAL로 인증한 후 MAM 관리를 위해 새 계정을 등록합니다.
  • 로그아웃 시 계정 등록을 취소하여 회사 데이터를 제거합니다.
  • (권장) MAM 로그인을 앱에 통합합니다.
  • (권장) SDK 진단 대화 상자를 사용하는 방법을 알아봅니다.

배경

이제 Intune 앱 SDK를 다운로드하여 빌드에 통합하고 클래스 및 메서드 교체를 성공적으로 수행했으므로 MAM으로 보호 계정에 대한 앱 보호 정책 설정 적용을 시작하기 위해 필수 코드를 변경해야 합니다.

이 단계에서는 SDK의 로깅에 연결하고, 진단 대화 상자를 호출하고, MAM 엄격 모드를 사용하여 가능한 통합 버그를 식별하고, SDK의 알림을 등록하고, 가장 중요한 것은 Intune MAM에 대한 계정을 등록하여 정책 수신을 시작하는 방법을 알려줍니다.

MAM 엄격 모드

MAM 엄격 모드는 응용 프로그램의 Intune App SDK 통합에서 잠재적인 버그를 식별할 수 있습니다. 이러한 통합 버그로 인해 앱 보호 정책을 제대로 적용하지 못하고 회사 데이터가 보호되지 않을 수 있습니다. 따라서 MAM 엄격 모드를 사용해야 합니다.

MAM 엄격 모드는 애플리케이션의 MAM API 및 MAM 제한 플랫폼 API 사용에서 이상을 찾습니다. Android의 StrictMode를 따라 느슨하게 패턴화된 MAM 엄격 모드는 실패할 때 런타임 오류를 일으키는 미리 정의된 검사 집합을 실행합니다. MAM 엄격 모드는 프로덕션 빌드에서 사용하도록 설정된 상태로 두지 않습니다. 대신 앱의 내부 개발, 디버그 및/또는 시험판 빌드에 사용하세요.

MAM 엄격 모드를 사용하도록 설정하려면 응용 프로그램 초기화 초기에 다음 메서드를 호출합니다(예: Application.onCreate).

MAMStrictMode.enable();

MAM 엄격 모드 검사가 실패하면 앱에서 해결할 수 있는 실제 문제인지 아니면 가양성인지 확인해 보세요. 가양성이라고 생각되거나 확실하지 않은 경우 Intune MAM 팀에 알려주세요. 이를 통해 가양성 결정에 동의하는지 확인하고 향후 릴리스에 대한 검색 기능을 개선하려고 시도할 수 있습니다. 가양성을 표시하지 않으려면 아래 지침에 따라 실패한 검사를 사용하지 않도록 설정합니다.

위반 처리

검사에 실패하면 MAMStrictViolationHandler를 실행합니다. 기본 처리기는 앱을 충돌시킬 것으로 예상되는 .를 Errorthrow합니다. 이는 오류 발생 시 최대한 시끄럽게 만들기 위한 것이며 프로덕션 빌드에서 엄격 모드를 사용하도록 설정해서는 안 된다는 의도에 부합합니다.

앱에서 위반을 다르게 처리하려는 경우 implements에서 다음 메서드 handler 를 호출하여 자체 처리기를 제공할 수 있습니다.MAMStrictViolationHandler

MAMStrictMode.global().setHandler(handler);

검사 표시 안 함

앱이 잘못된 작업을 수행하지 않는 상황에서 검사에 실패하는 경우 위에서 설명한 대로 보고합니다. 그동안 적어도 업데이트된 SDK를 기다리는 동안에는 가양성이 발생하는 검사를 사용하지 않도록 설정해야 할 수 있습니다. 실패한 검사는 기본 처리기에서 발생한 오류에 표시되거나, 설정된 경우 사용자 지정 처리기로 전달됩니다.

억제는 전역적으로 수행할 수 있지만 특정 호출 사이트에서 스레드당 일시적으로 비활성화하는 것이 좋습니다. 다음 예에서는 MAMStrictCheck.IDENTITY_NO_SUCH_FILE 사용하지 않도록 설정하는 다양한 방법을 보여 줍니다(존재하지 않는 파일을 보호하려는 경우 발생됨).

Per-Thread 임시 억제

이는 기본 표시 안 함 메커니즘입니다.

try (StrictScopedDisable disable = MAMStrictMode.thread().disableScoped(MAMStrictCheck.IDENTITY_NO_SUCH_FILE)) {
    // Perform the operation which raised a violation here
}
// The check is no longer disabled once the block exits

영구 억제 Per-Thread

MAMStrictMode.thread().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);

전역(프로세스 전체) 표시 안 함

MAMStrictMode.global().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);

SDK에서 알림 등록

Intune 앱 SDK는 시간에 민감한 관리 작업을 애플리케이션에 알리기 위해 다양한 유형의 알림을 발행합니다. 애플리케이션은 이러한 알림을 등록하고 수신할 때 조치를 취할 수 있습니다.

예를 들어 IT 관리자가 장치에 대해 선택적 초기화 명령을 실행할 때마다 Intune 서비스는 SDK에 알림을 보내고, 이 알림은 애플리케이션에 전달됩니다.WIPE_USER_DATA 응용 프로그램에서 이 알림을 수신하고 지워지는 데이터를 제어할 수 있습니다. 또는 SDK의 기본 초기화 동작에 의존할 수 있습니다.

대부분의 알림은 선택 사항입니다. 애플리케이션에서 사용하는 SDK 기능에 따라 일부 알림이 필요할 수 있습니다. 알림을 등록하는 방법, SDK에서 제공하는 알림 및 특정 알림 유형을 처리하는 방법에 대한 자세한 내용은 7단계: 앱 참여 기능SDK에서 알림 등록을 참조하세요.

앱 보호 정책 등록

관리자는 앱 보호 정책을 만들 때 이러한 정책을 organization의 특정 계정에 대상으로 지정합니다. 클라이언트에서 SDK는 해당 계정의 정책을 검색하고 설정을 적절하게 적용할 수 있도록 애플리케이션을 사용하는 계정을 알아야 합니다. 앱은 SDK에 이 계정 정보를 제공해야 합니다. 이 프로세스를 등록이라고 합니다.

앱이 새 계정을 추가할 때마다 다른 계정이 이미 등록되어 있더라도 SDK에 계정을 등록해야 합니다. 앱에서 여러 계정을 등록할 수 있습니다. 그러나 현재는 하나의 계정만 등록하거나 앱 보호 정책을 적용할 수 있습니다. Android에서 이 단일 관리 계정 제한은 장치 전체에 적용됩니다.

등록과 등록 비교

등록은 앱에서 새 계정이 사용 중임을 SDK에 알리는 프로세스입니다. SDK에는 계정을 등록 및 등록 취소할 때 앱에서 호출해야 하는 함수가 포함되어 있습니다.

등록은 SDK가 계정의 정책을 적용할 수 있도록 등록된 계정을 Intune 서비스에 기록하는 프로세스입니다. 앱에서 등록을 위해 함수를 호출할 필요가 없습니다. SDK는 계정이 등록된 후 등록을 완전히 처리합니다.

한 계정이 애플리케이션에 이미 등록되어 있는 경우 다른 계정을 등록할 때 해당 계정이 앱 보호 정책의 대상인 경우에도 두 번째 계정이 등록되지 않으며 정책이 적용되지 않습니다.

참고

"등록"이라는 용어는 장치 전체의 MDM 등록을 나타낼 수도 있습니다 . 자세한 내용은 MDM 및 MAM 등록의 부록을 참조하세요.

등록 구현

주의

앱이 MSAL을 통합하지 않는 경우(강력하게 권장됨) 이 섹션을 계속 진행하는 대신 부록기본 등록을 참조하세요.

계정을 성공적으로 등록하려면 앱에서 세 가지 코드를 변경해야 합니다.

  1. 앱은 MAMServiceAuthenticationCallback 또는 MAMServiceAuthenticationCallbackExtended 인터페이스의 instance를 구현하고 등록해야 합니다. 콜백 instance는 Application 하위 클래스의 (또는 onMAMCreate()) 메서드에 onCreate() 등록되어야 합니다.

  2. 계정이 만들어지고 사용자가 MSAL에 성공적으로 로그인하면 앱은 registerAccountForMAM을 호출해야 합니다.

  3. 계정이 제거되면 앱은 unregisterAccountForMAM을 호출하여 Intune 관리에서 계정을 제거해야 합니다.

    주의

    호출은 계정의 회사 데이터를 완전히 제거하기 위해 초기화를 시작할 수 있습니다.

필요한 모든 인증 및 등록 API는 MAMEnrollmentManager 인터페이스에서 찾을 수 있습니다. 에 MAMEnrollmentManager 대한 참조는 다음과 같이 가져올 수 있습니다.

MAMEnrollmentManager mgr = MAMComponents.get(MAMEnrollmentManager.class);

// make use of mgr

MAMEnrollmentManager 반환된 instance는 null이 아닌 것으로 보장됩니다. API 메서드는 인증계정 등록이라는 두 가지 범주로 나뉩니다.

MAMEnrollmentManager 및 인증

SDK는 등록된 계정을 등록하고, 앱 보호 정책 설정에 대한 업데이트를 받고, 앱 내에서 보호된 데이터를 선택적으로 삭제하는 것과 같은 보류 중인 관리자 작업을 가져오기 위해 Intune 서비스와 자주 통신합니다. Intune 서비스와 성공적으로 통신하려면 SDK에 MSAL이 통합된 앱의 새로운 액세스 토큰이 필요합니다.

SDK가 새 토큰을 검색할 수 없는 경우 Intune 서비스와 통신할 수 없어 새 정책 설정 또는 관리자 작업의 검색 및 적용이 지연될 수 있습니다. 정책이 원활하게 적용되도록 앱에서 이러한 단계를 완료하는 것이 중요합니다.

2단계에서는 인증 및 액세스 토큰 획득을 위해 MSAL을 애플리케이션에 통합했습니다. 여기서는 SDK가 필요한 토큰을 요청할 수 있도록 인증 콜백을 구현합니다.

MAMEnrollmentManager 에는 다음과 같은 인증 방법이 있습니다.

interface MAMServiceAuthenticationCallback {
    String acquireToken(String upn, String aadId, String resourceId);
}
interface MAMServiceAuthenticationCallbackExtended extends MAMServiceAuthenticationCallback {
    String acquireToken(String upn, String aadId, String tenantId, String authority, String resourceId);
}
void registerAuthenticationCallback(MAMServiceAuthenticationCallback callback);
void updateToken(String upn, String aadId, String resourceId, String token);

참고

이러한 메서드의 매개 변수는 aadId 이전에 AAD ID라고 하며 OID라고도 하는 Microsoft Entra 사용자 ID를 참조합니다.

  1. SDK가 지정된 계정 및 리소스 ID에 대한 Microsoft Entra 토큰을 요청할 수 있도록 앱은 MAMServiceAuthenticationCallback 인터페이스 또는 MAMServiceAuthenticationCallbackExtended 인터페이스를 구현해야 합니다. registerAuthenticationCallback 메서드를 호출하여 콜백 instance를 제공해야 합니다.MAMEnrollmentManager 등록 재시도 또는 앱 보호 정책 새로 고침 검사 기능을 위해 앱 수명 주기 초기에 토큰이 필요할 수 있으므로 콜백을 앱 하위 Application 클래스의 (또는 onMAMCreate()) 메서드에 onCreate() 등록해야 합니다.

  2. 메서드는 acquireToken 지정된 계정에 대해 요청된 리소스 ID에 대한 액세스 토큰을 획득해야 합니다. 요청된 토큰을 획득할 수 없는 경우 null을 반환해야 합니다.

    올바른 토큰을 획득할 수 있도록 앱에서 전달된 acquireToken() 매개 변수를 활용 resourceIdaadId 하는지 확인합니다. 매개 변수는 upn 정보 제공용으로만 사용됩니다. 계정별을 식별하는 데 사용해서는 안 됩니다.aadId resourceId 를 사용하여 적절한 범위를 aadId 생성하고 올바른 계정을 전달하는 데 사용해야 합니다. 잘못된 계정 및/또는 잘못된 리소스에 대해 토큰이 반환되면 앱 등록 및 정책 검색 과정이 지연되거나 실패할 수 있습니다. 앱에서 토큰을 올바르게 획득하기 위해 Microsoft Entra 기관이 필요한 경우 인터페이스를 구현합니다MAMServiceAuthenticationCallbackExtended.

    class MAMAuthCallback implements MAMServiceAuthenticationCallbackExtended {
        public String acquireToken(String upn, String aadId,
                    String tenantId, String authority, String resourceId) {
            final String[] scopes = {resourceId + "/.default"};
    
            final IAccount account = getAccount(aadId);
            if (account == null) {
                // Log error or warning here about: "no account found for " + aadId
                return null;
            }
    
            AcquireTokenSilentParameters params =
                new AcquireTokenSilentParameters.Builder()
                        .forAccount(account)
                        .fromAuthority(account.getAuthority())
                        .withScopes(Arrays.asList(scopes))
                        .withCallback(callback)
                        .build();
    
            return mMsalClientApplication.acquireTokenSilent(params);
        }
    
        private static IAccount getAccount(String aadId) throws InterruptedException, MsalException {
          IAccount account = null;
    
          if (mMsalClientApplication instanceof IMultipleAccountPublicClientApplication) {
              IMultipleAccountPublicClientApplication multiAccountPCA =
                      (IMultipleAccountPublicClientApplication) mMsalClientApplication;
    
              account = multiAccountPCA.getAccount(aadId);
          } else {
              ISingleAccountPublicClientApplication singleAccountPCA =
                      (ISingleAccountPublicClientApplication) mMsalClientApplication;
    
              ICurrentAccountResult accountResult = singleAccountPCA.getCurrentAccount();
              if (accountResult != null) {
                  account = accountResult.getCurrentAccount();
                  // make sure this is the correct user
                  if (account != null && !account.getId().equals(aadId))
                      account = null;
              }
          }
          return account;
      }
    }
    
  3. SDK가 호출 acquireToken() 할 때 앱이 토큰을 제공할 수 없는 경우(예: 자동 인증이 실패하고 UI를 표시하기가 불편한 경우) 앱은 나중에 updateToken 메서드를 호출하여 토큰을 제공할 수 있습니다. 이전 호출 acquireToken() 에서 요청한 것과 동일한 UPN, Microsoft Entra ID 및 리소스 ID를 최종적으로 획득한 토큰과 함께 에 전달updateToken()해야 합니다. 이 upn 매개 변수는 정보 제공만을 목적으로 하며 일반적으로 MAM SDK에서 무시됩니다. 앱은 제공된 콜백에서 null을 반환한 후 최대한 빨리 이 메서드를 호출해야 합니다.

    경고

    의 구현 내에서 호출 updateToken() 하지 마세요.acquireToken() updateToken() 토큰을 획득할 수 없는 경우 acquireToken() 에 사용해야 합니다.

    참고

    SDK는 토큰을 가져오기 위해 주기적으로 호출 acquireToken() 하므로 꼭 호출 updateToken() 할 필요는 없습니다. 하지만 적시에 등록 및 앱 보호 정책 검사를 완료하는 데 도움이 될 수 있으므로 적극 권장됩니다.

인증 구현 참고 사항

  • 앱은 registerAccountForMAM을 호출하기 전에 Microsoft Entra 토큰을 획득하는 것이 좋습니다. 계정을 등록하면 앱은 다른 스레드에 있는 등록된 MAMServiceAuthenticationCallbackacquireToken() 메서드에 대한 콜백을 수신합니다. 해당 콜백에서 유효한 토큰을 제공하면 등록을 진행할 수 있습니다. 앱은 알림을 통해 등록 결과를 가져옵니다.

  • 앱이 유효한 Microsoft Entra 토큰을 반환하지 않는 경우 등록 시도AUTHORIZATION_NEEDED의 최종 결과는 입니다. 앱이 알림을 통해 이 결과를 받는 경우 acquireToken 에서 이전에 요청한 계정 및 리소스에 대한 토큰을 획득하고 updateToken 메서드를 호출하여 등록 프로세스를 다시 시작하는 방식으로 등록 프로세스를 신속하게 진행하는 것이 좋습니다.

  • 등록된 MAMServiceAuthenticationCallback 앱은 주기적인 앱 보호 정책 새로 고침 검사를 위한 토큰을 획득하기 위해서도 호출됩니다. 요청할 때 앱이 토큰을 제공할 수 없는 경우 알림을 받지 못하지만 토큰을 획득하고 다음 편리한 시간에 전화를 시도 updateToken() 하여 검사 프로세스를 신속하게 처리해야 합니다. 토큰이 제공되지 않으면 다음 검사 시도 시 콜백이 계속 호출될 수 있습니다.

  • 소버린 클라우드를 지원하려면 권한을 제공해야 합니다.

  • 인터페이스가 구현된 경우 MAMServiceAuthenticationCallbackExtended 인터페이스가 기본 구현을 제공하므로 MAMServiceAuthenticationCallbackExtended 상속된 acquireToken() 메서드 MAMServiceAuthenticationCallback 를 구현할 필요가 없습니다.

MAMEnrollmentManager 및 등록

앱에서 계정을 추가할 때마다 SDK에 계정을 등록해야 합니다. 마찬가지로 앱에서 계정을 제거할 때마다 해당 계정의 등록을 취소하여 앱이 해당 계정에 대해 정책을 더 이상 적용해서는 안 됨을 표시해야 합니다. 계정이 MAM 서비스에 등록된 경우 계정이 등록 취소되고 앱이 지워집니다.

MAMEnrollmentManager 의 계정 등록 방법은 다음과 같습니다.

void registerAccountForMAM(String upn, String aadId, String tenantId);
void registerAccountForMAM(String upn, String aadId, String tenantId, String authority);
void unregisterAccountForMAM(String upn, String aadId);
Result getRegisteredAccountStatus(String upn, String aadId);
  1. 관리를 위해 계정을 등록하려면 앱에서 를 호출 registerAccountForMAM()해야 합니다. 계정은 UPN과 Microsoft Entra 사용자 ID로 식별됩니다. 등록 데이터를 계정의 Microsoft Entra 테넌트와 연결하려면 테넌트 ID도 필요합니다. 계정의 권한은 특정 소버린 클라우드에 대한 등록을 허용하도록 제공될 수도 있습니다. 자세한 내용은 Sovereign Cloud 등록을 참조하세요. SDK는 지정된 계정에 대한 앱을 MAM 서비스에서 등록하려고 시도할 수 있습니다. 등록에 실패하면 등록이 성공하거나 계정이 등록 취소될 때까지 주기적으로 등록을 다시 시도합니다. 재시도 기간은 일반적으로 12-24시간입니다. SDK는 알림을 통해 비동기적으로 등록 시도 상태를 제공합니다.

  2. 호출 registerAccountForMAM 하기에 가장 좋은 시간은 사용자가 앱에 로그인하고 MSAL을 사용하여 성공적으로 인증된 후입니다. 계정의 Microsoft Entra 사용자 ID, 테넌트 ID 및 기관은 MSAL 인증 호출에서 관련 데이터 IAccount 의 일부로 반환됩니다.IAuthenticationResult

    • 계정은 메서드에서 IAuthenticationResult.getAccount() 가져오며 관련 계정 정보를 포함합니다.
    • AAD ID(Microsoft Entra ID 또는 OID라고도 함)는 메서드에서 IAccount.getId() 가져옵니다.
    • 테넌트 ID는 메서드에서 가져옵니다.IAccount.getTenantId()
    • 권위는 방법에서 나옵니다 IAccount.getAuthority() .
  3. Intune 관리에서 계정 등록을 취소하려면 앱이 호출해야 합니다unregisterAccountForMAM(). 계정이 성공적으로 등록되고 관리되고 있는 경우 SDK는 계정 등록을 취소하고 데이터를 지웁니다. 계정에 대한 주기적인 등록 재시도가 중지됩니다. SDK는 알림을 통해 비동기적으로 등록 해제 요청의 상태를 제공합니다.

등록 구현 참고 사항

  • 등록 방법은 idempotent입니다. 예를 들어 registerAccountForMAM 은 계정이 아직 등록되지 않은 경우에만 계정을 등록하고 앱 등록을 시도하고, unregisterAccountForMAM 은 현재 등록된 경우에만 계정 등록을 취소합니다. 후속 호출은 no-op이므로 이러한 메서드를 두 번 이상 호출해도 아무런 문제가 없습니다.

  • 모든 등록/등록 취소 호출에 해당 결과 알림이 있다는 보장은 없습니다. 예를 들어 이미 등록된 계정에 대해 호출되는 경우 registerAccountForMAM() 해당 ID에 대해 알림이 다시 전송되지 않을 수 있습니다. 또는 SDK가 백그라운드에서 주기적으로 등록을 시도할 수 있고 Intune 서비스에서 받은 삭제 요청에 의해 등록 취소가 트리거될 수 있으므로 앱이 이러한 메서드를 호출하지 않은 경우에도 SDK가 알림을 보낼 수 있습니다.

  • 등록 방법은 여러 계정에 대해 호출할 수 있지만 현재는 하나의 계정만 성공적으로 등록될 수 있습니다. Intune에 대한 라이선스가 부여되고 앱 보호 정책이 대상인 여러 계정이 동시에 또는 거의 동시에 등록되는 경우 어느 계정이 경쟁에서 이길지 보장할 수 없습니다.

  • MAMEnrollmentManager를 쿼리하여 특정 계정이 등록되어 있는지 확인하고 getRegisteredAccountStatus 메서드를 사용하여 현재 상태를 가져올 수 있습니다. 제공된 계정이 등록되지 않은 경우 이 메서드는 null을 반환합니다. 계정이 등록된 경우 이 메서드는 계정의 상태를 MAMEnrollmentManager.Result 열거형의 멤버 중 하나로 반환합니다.

Sovereign Cloud 등록

Azure는 소버린 클라우드 또는 국가 클라우드라고 하는 물리적으로 격리된 여러 클라우드를 지원합니다. 애플리케이션이 소버린 클라우드 인식인 경우 매개 변수를 authority 제공해야 합니다.registerAccountForMAM()

MSAL 지침

MSAL의 경우 MSAL 구성 파일에서 로 설정합니다 multiple_clouds_supportedtrue.

{
  "multiple_clouds_supported": true,
}

등록 결과 및 상태 코드

계정이 처음 등록되면 초기 MAM 서비스 등록 시도가 완료되지 않았음을 나타내는 상태에서 PENDING 시작됩니다. 등록 시도가 완료되면 아래 표에 있는 결과 코드 중 하나와 함께 알림이 전송됩니다. 또한 getRegisteredAccountStatus 메서드는 계정의 상태 반환하므로 앱에서 항상 해당 계정에 앱 보호 정책이 적용되어 있는지 확인할 수 있습니다. 등록 시도에 실패하면 SDK가 백그라운드에서 등록을 다시 시도함에 따라 시간이 지남에 따라 계정 상태가 변경될 수 있습니다.

결과 코드 설명
AUTHORIZATION_NEEDED 이 결과는 앱의 등록된 MAMServiceAuthenticationCallback instance에서 토큰을 제공하지 않았거나 제공된 토큰이 잘못되었음을 나타냅니다. 앱은 유효한 토큰을 획득하고 가능하면 updateToken 을 호출해야 합니다.
NOT_LICENSED 계정에 Intune에 대한 라이선스가 없거나 Intune MAM 서비스에 연결하지 못했습니다. 앱은 관리되지 않는(일반) 상태로 계속되어야 하며 사용자가 차단되어서는 안 됩니다. 나중에 계정이 라이선스가 부여되는 경우 등록이 주기적으로 다시 시도됩니다.
ENROLLMENT_SUCCEEDED 등록 시도가 성공했거나 계정이 이미 등록되어 있습니다. 성공적인 등록의 경우 이 알림 전에 정책 새로 고침 알림이 전송됩니다. 회사 데이터에 대한 액세스를 허용해야 합니다.
ENROLLMENT_FAILED 등록 시도가 실패했습니다. 자세한 내용은 디바이스 로그에서 확인할 수 있습니다. 이전에 계정에 Intune 라이선스가 부여된 것으로 확인되었으므로 앱에서 이 상태에서는 회사 데이터에 대한 액세스를 허용해서는 안 됩니다. 모든 앱은 앱에서 회사 데이터 액세스가 승인되지 않았 ENROLLMENT_SUCCEEDED 는지 확인해야 합니다.
WRONG_USER 디바이스당 하나의 계정만 MAM 서비스에 앱을 등록할 수 있습니다. 이 결과는 이 결과가 전달된 계정(두 번째 계정)이 MAM 정책의 대상이지만 다른 계정이 이미 등록되어 있음을 나타냅니다. MAM 정책은 두 번째 계정에 대해 적용될 수 없으므로 나중에 이 계정에 대한 등록이 성공하지 않는 한/앱이 앱에서 계정을 제거하여 이 계정의 데이터에 대한 액세스를 허용해서는 안 됩니다. 이 WRONG_USER 결과를 제공하는 것과 동시에 MAM은 최종 사용자에게 수정할 두 가지 옵션을 묻습니다. (1) 두 번째 계정이 등록할 수 있도록 기존 등록 계정을 제거하거나 (2) 기존 계정이 등록된 상태로 유지되는 동안 프롬프트가 나타나지 않도록 두 번째(시도한) 계정을 제거합니다. 사용자가 옵션 (1)을 선택하면 잠시 후에 두 번째 계정을 등록할 수 있습니다. 사용자가 옵션(2)을 선택하면 MAM은 두 번째 계정을 로컬에서 등록 취소하고 표준 등록 결과 알림을 통해 해당 계정에 대해 보고 UNENROLLMENT_SUCCEEDED 합니다. 두 번째 계정은 등록되지 않았기 때문에 선택적 초기화가 수행되지 않으며 초기화 알림이 전달되지 않습니다. 또한 MAM은 해당 계정에 대한 등록 재시도를 중지하므로 프롬프트가 더 이상 다시 나타나지 않습니다. 두 번째 계정이 등록된 상태로 유지되는 동안(즉, 사용자가 옵션 (2)을 선택하지 않은 경우) MAM은 주기적으로 등록을 다시 시도합니다.
UNENROLLMENT_SUCCEEDED 등록 취소에 성공했습니다.
UNENROLLMENT_FAILED 등록 취소 요청이 실패했습니다. 자세한 내용은 디바이스 로그에서 확인할 수 있습니다. 일반적으로 앱이 유효한(null도 비어 있지도 않은) UPN을 전달하는 한 이 문제가 발생하지 않습니다. 앱에서 수행할 수 있는 직접적이고 안정적인 수정은 없습니다. 유효한 UPN 등록을 취소할 때 이 값을 받으면 Intune MAM 팀에 버그로 보고합니다.
PENDING 계정에 대한 초기 등록 시도가 진행 중입니다. 앱은 등록 결과를 알 때까지 회사 데이터에 대한 액세스를 차단할 수 있지만, 반드시 그렇게 할 필요는 없습니다.
COMPANY_PORTAL_REQUIRED 계정에 Intune 사용 권한이 있지만 디바이스에 회사 포털 앱이 설치될 때까지 앱을 등록할 수 없습니다. Intune 앱 SDK는 지정된 계정의 앱에 대한 액세스를 차단하고 사용자에게 회사 포털 앱을 설치하도록 지시합니다. 앱에 이 알림을 보낼 때 Intune 앱 SDK는 활동이 현재 사용자에게 표시되거나 다음 onResume 에 호출되는 경우 현재 활동 위에 비차단 UI를 표시합니다. 사용자가 이 비차단 UI를 취소하면 다음에 onCreate 활동에 대해 호출되고 현재 ID가 관리될 때 Intune 앱 SDK가 차단 UI를 표시합니다(문제 해결에 대한 자세한 내용은 아래 참조).

로깅된 데이터에서 최대한의 가치를 얻으려면 로깅을 조기에 초기화해야 합니다. Application.onMAMCreate() 로깅을 초기화하는 데 가장 적합한 위치입니다.

앱에서 MAM 로그를 수신하려면 Java 처리기를 만들어 MAMLogHandlerWrapper에 추가합니다. 이는 모든 로그 메시지에 대해 애플리케이션 처리기를 호출 publish() 합니다.

/**
 * Global log handler that enables fine grained PII filtering within MAM logs.
 * To start using this you should build your own log handler and add it via
 * MAMComponents.get(MAMLogHandlerWrapper.class).addHandler(myHandler, false);
 * You may also remove the handler entirely via
 * MAMComponents.get(MAMLogHandlerWrapper.class).removeHandler(myHandler);
 */
public interface MAMLogHandlerWrapper {
    /**
     * Add a handler, PII can be toggled.
     * @param handler handler to add.
     * @param wantsPII if PII is desired in the logs.
     */
    void addHandler(final Handler handler, final boolean wantsPII);

    /**
     * Remove a handler.
     * @param handler handler to remove.
     */
    void removeHandler(final Handler handler);
}

참고

PII는 "개인 식별 정보"를 의미하며 사용자 이름 및 UPN과 같은 데이터를 포함할 수 있습니다. 프로덕션 로그에서 이러한 개인 정보를 제외하는 것이 좋습니다. 자세한 내용은 Microsoft 개인정보처리방침 을 참조하세요.

Intune 회사 포털 앱에는 진단 정보를 수집하기 위한 여러 옵션이 있습니다. 회사 포털에는 다음과 같은 UI가 포함되어 있습니다.

  • 최종 사용자가 회사 포털 로그를 수집할 수 있도록 합니다.
  • 장치 및 계정 메타데이터를 표시합니다.
  • 현재 MAM 정책에 대한 앱별 정보를 포함합니다.

Intune 진단 UIIntune 앱 정보

회사 포털 로그 및 진단 UI에 포함된 데이터에 대한 자세한 설명은 부록회사 포털 로그 이해를 참조하세요.

MAM 정책을 적용해야 하는 계정으로 테스트 중이지만 진단에서 앱의 패키지 이름에 대한 정책을 표시하지 않는 경우 아래의 문제 해결 섹션을 참조하세요.

앱은 호출하여 이 진단 UI를 시작할 수 있습니다.MAMPolicyManager.showDiagnostics(context) 최종 사용자는 주소 표시줄에 입력 about:intunehelp 하여 Microsoft Edge를 통해 회사 포털의 진단 콘솔을 시작할 수도 있습니다. 디버깅에 도움이 될 수 있는 선택적 기능입니다.

이 진단 정보는 회사 포털이 장치에 설치된 경우에만 사용할 수 있습니다. 회사 포털을 설치하지 않고 호출할 때마다 showDiagnostics 경고 대화 상자가 나타납니다.

종료 조건

통합의 이 시점에서 앱은 이제 앱 보호 정책을 수신하고 적용할 수 있습니다. 다음 테스트를 실행하여 통합의 유효성을 검사합니다.

첫 번째 정책 응용 프로그램 테스트

먼저 다음 테스트를 실행하여 앱 내 정책 애플리케이션의 전체 최종 사용자 환경에 익숙해지세요.

  1. Microsoft Intune 관리 센터에서 Android 앱 보호 정책을 만듭니다(자세한 내용은 1단계에서 테스트 Android 앱 보호 정책 만들기 참조). 이 테스트에서는 다음 정책을 구성합니다.
    • 데이터 보호에서 "화면 캡처 및 Google 어시스턴트"를 "차단"으로 설정합니다.
    • 액세스 요구 사항에서 기본 설정을 그대로 둡니다. 특히 "액세스용 PIN"은 "Require"여야 합니다.
  2. 앱 보호 정책이 응용 프로그램을 대상으로 지정되어 있는지 확인합니다. 정책 만들기 마법사에서 패키지 이름을 수동으로 추가해야 할 수 있습니다.
  3. 테스트 계정을 포함하는 사용자 그룹에 앱 보호 정책을 할당합니다.
  4. 테스트 Android 디바이스에서 Microsoft Outlook, Teams, OneDrive, Office와 같은 다른 SDK 통합 앱을 제거합니다. 또한 Intune 회사 포털 앱 및 Microsoft Authenticator 앱을 제거합니다.
    • 다른 SDK 통합 앱을 제거하면 자체 앱의 통합을 독점적으로 테스트하는 데 도움이 됩니다.

  5. 애플리케이션을 설치합니다.
  6. 앱 보호 정책이 적용되는 테스트 계정을 사용하여 애플리케이션에 로그인합니다.
  7. Google Play에서 Intune 회사 포털을 설치하라는 메시지가 표시되는지 확인합니다.
    • 참고

      테스트 디바이스에 Google Play 스토어 앱이 없는 경우 다른 앱 스토어 또는 Microsoft 웹 사이트에서 Intune 회사 포털을 설치하라는 메시지가 표시되는지 확인합니다.

  8. 회사 포털을 설치합니다. 회사 포털을 시작하거나 회사 포털에 로그인할 필요가 없습니다.
  9. 필요한 경우 앱으로 돌아가서 다시 로그인합니다.
  10. 액세스 권한 가져오기 화면이 표시되는지 확인합니다. 이는 SDK가 이 계정에 대한 정책을 성공적으로 검색했음을 나타냅니다.
  11. 앱 PIN을 설정하라는 메시지가 표시됩니다. PIN을 만듭니다.
  12. 애플리케이션을 탐색하고 스크린샷을 찍습니다. SDK에 정책이 있는 경우 모든 화면에서 일관되게 차단되어야 합니다.
  13. 애플리케이션에서 관리 계정을 로그아웃합니다.
  14. 가능하면 로그인하지 않고 애플리케이션을 탐색하고 스크린샷을 찍으세요. 이제 계정이 제거되었으므로 이 계정을 차단해서는 안 됩니다.

앱이 계정을 제대로 등록하고, 인증 콜백을 등록하고, 계정을 등록 취소했는지 확인하기 위한 최소한 의 테스트입니다. 다음 테스트를 실행하여 다른 앱 보호 정책 설정이 응용 프로그램의 동작을 수정하는 방식을 보다 철저히 검사합니다.

데이터 보호 테스트

다음 테스트는 앱 보호 정책 내에 구성된 특정 데이터 보호 설정을 다룹니다. Microsoft Intune 관리 센터에서 앱 보호 정책 설정을 변경하면 클라이언트가 즉시 업데이트되지 않습니다. 테스트 속도를 높이는 방법에 대한 팁은 변경하는 정책을 사용하여 빠른 테스트를 참조하세요.

다음 테스트의 경우:

  1. 앱을 설치합니다.
  2. Intune 회사 포털을 설치합니다.
  3. 데이터를 복사하여 붙여넣을 수 있는 앱과 동일한 정책을 대상으로 지정하는 다른 관리형 앱을 설치합니다(예: Microsoft Office).
  4. 데이터를 복사하여 붙여넣을 수 있는 관리되지 않는 앱을 설치(또는 다시 사용)합니다.
  5. 테스트 관리 계정으로 앱에 로그인합니다.
  6. 관리되는 테스트 계정으로 다른 관리되는 앱에 로그인합니다.
시나리오 앱 보호 정책 설정 테스트 단계
스크린샷 "화면 캡처 및 Google Assistant"를 "차단"으로 설정 1. 앱의 모든 페이지로 이동합니다.
2. 각 페이지에서 스크린샷 촬영을 시도합니다.
3. 스크린샷이 차단되었거나 저장된 이미지가 완전히 비어 있는지 확인합니다.
텍스트 복사 "다른 앱 간의 잘라내기, 복사 및 붙여넣기 제한"을 "정책 관리 앱"으로 설정 0. 앱에 복사할 텍스트가 없으면 건너뜁니다.
1. 복사 가능한 텍스트가 있는 앱에서 모든 페이지로 이동합니다.
2. 텍스트를 복사합니다.
3. 관리되지 않는 앱으로 전환합니다.
4. 관리되지 않는 앱에 붙여넣기를 시도합니다.
5. 붙여넣기가 차단되었는지 확인합니다.
6. 다른 관리되는 앱으로 이동합니다.
7. 관리되는 앱에 붙여넣기를 시도합니다.
8. 붙여넣기가 허용되는지 확인합니다.
텍스트 붙여넣기 "다른 앱 간의 잘라내기, 복사 및 붙여넣기 제한"을 "정책 관리 앱"으로 설정 0. 앱에 붙여넣을 텍스트 입력이 없으면 건너뜁니다.
1. 관리되지 않는 앱으로 전환합니다.
2. 관리되지 않는 앱에서 텍스트를 복사합니다.
3. 앱에서 텍스트 입력이 있는 모든 페이지로 이동합니다.
5. 관리되지 않는 앱에서 붙여넣기를 시도합니다.
5. 붙여넣기가 차단되었는지 확인합니다.
6. 다른 관리되는 앱으로 전환합니다.
7. 다른 관리되는 앱에서 텍스트를 복사합니다.
7. 앱에서 텍스트 입력이 있는 모든 페이지로 이동합니다.
8. 다른 관리되는 앱에서 붙여넣기를 시도합니다.
9. 붙여넣기가 허용되는지 확인합니다.
인쇄 "조직 데이터 인쇄"를 "차단"으로 설정 0. 앱에 인쇄할 수 있는 페이지나 문서가 없으면 건너뜁니다.
1. Android의 인쇄 기능을 호출하는 앱의 모든 페이지로 이동합니다.
2. 각 페이지에서 인쇄를 시도합니다.
3. 인쇄가 차단되어 있는지 확인합니다.
Microsoft Edge 웹 콘텐츠 제한 "다른 앱으로 웹 콘텐츠 전송 제한"을 "Microsoft Edge"로 설정 0. 앱이 웹 링크를 렌더링하지 않으면 건너뜁니다.
1. 웹 링크를 표시할 수 있거나 클릭 가능한 웹 링크로 렌더링되는 텍스트 입력이 있는 앱의 모든 페이지로 이동합니다.
2. 각 페이지에서 웹 링크를 선택합니다.
3. Microsoft Edge를 설치하라는 메시지가 표시되고 웹 링크가 다른 브라우저에서 열리지 않는지 확인합니다.
제한된 키보드 "승인된 키보드"가 "필수"로 설정
장치에 현재 설치되지 않은 키보드 패키지로 설정된 "승인할 키보드 선택"
0. 앱에 텍스트 입력이 없으면 건너뜁니다.
1. 앱에서 텍스트 입력이 있는 모든 페이지로 이동합니다.
2. 텍스트 입력을 선택하여 장치 키보드를 불러옵니다.
3. 구성된 승인된 키보드를 설치하라는 메시지가 표시되고 현재 장치 키보드가 열리지 않는지 확인합니다.

데이터 전송 테스트

데이터 전송 설정은 관리되는 앱에 들어오고 나가는 데이터를 제어하는 앱 보호 정책 데이터 보호 기능의 하위 집합입니다. 다른 앱과 데이터를 고받는 것을 지원하는 대부분의 앱은 로컬 또는 클라우드 저장소에 데이터를저장하고 열 수도 있습니다. 앱에 이러한 기능이 있는 경우 추가 지원을 구현해야 합니다. 자세한 내용은 앱과 장치 또는 클라우드 저장소 위치 간의 데이터 전송을 제한하는 정책을 참조하세요.

앱은 Microsoft OneDrive에서 파일을 첨부하는 Microsoft Outlook과 같은 다른 앱에서 데이터를 적극적으로 가져올 수 있습니다. 앱은 Microsoft Office Microsoft Outlook 첨부 파일에서 문서를 여는 것과 같은 다른 앱에서 데이터를 수동으로 수신할 수도 있습니다. "다른 앱에서 데이터 받기" 정책 설정은 두 가지 시나리오를 모두 다룹니다.

다음 테스트의 경우:

  1. 앱을 설치합니다.
  2. Intune 회사 포털을 설치합니다.
  3. 앱과 동일한 정책으로 대상이 되고 데이터를 보내고 받을 수 있는 다른 관리형 앱을 설치합니다(예: Microsoft Outlook).
  4. 데이터를 보내고 받을 수 있는 관리되지 않는 앱을 설치(또는 다시 사용)합니다.
  5. 테스트 관리 계정으로 앱에 로그인합니다.
  6. 관리되는 테스트 계정으로 다른 관리되는 앱에 로그인합니다.
시나리오 앱 보호 정책 설정 테스트 단계
다른 앱으로 데이터 보내기 "다른 앱으로 조직 데이터 보내기"를 "정책 관리 앱"으로 설정 0. 앱이 다른 앱으로 데이터를 보낼 수 없는 경우 건너뜁니다.
1. 앱에서 데이터를 보낼 수 있는 위치로 이동합니다.
2. 데이터 전송을 시도합니다.
3. 다른 관리되는 앱에만 데이터를 보내도록 제한되는지 확인합니다. 관리되는 앱만 있는 앱 선택기가 표시되어야 합니다.
다른 앱에서 데이터 가져오기 "다른 앱에서 데이터 받기"를 "정책 관리 앱"으로 설정 0. 앱이 다른 앱의 데이터를 가져올 수 없는 경우 건너뜁니다.
1. 앱이 다른 앱의 데이터를 가져올 수 있는 위치로 이동합니다.
2. 데이터 가져오기를 시도합니다.
3. 다른 관리되는 앱에서만 데이터를 가져올 수 있는지 확인합니다. 관리되는 앱만 있는 앱 선택기가 표시되어야 합니다.
관리되지 않는 앱에서 데이터 수신 "다른 앱에서 데이터 받기"를 "정책 관리 앱"으로 설정 0. 앱이 다른 앱으로부터 데이터를 수신할 수 없는 경우 건너뜁니다.
1. 관리되지 않는 앱으로 전환합니다.
2. 데이터를 보낼 수 있는 위치로 이동합니다.
3. 관리되지 않는 앱에서 앱으로 데이터를 보내려고 시도합니다.
4. 앱이 관리되지 않는 앱에서 데이터를 수신할 수 없는지 확인합니다.
관리되는 앱에서 데이터 수신 "다른 앱에서 데이터 받기"를 "정책 관리 앱"으로 설정 0. 앱이 다른 앱으로부터 데이터를 수신할 수 없는 경우 건너뜁니다.
1. 다른 관리되는 앱으로 전환합니다.
2. 데이터를 보낼 수 있는 위치로 이동합니다.
3. 다른 관리되는 앱에서 앱으로 데이터를 보내려고 시도합니다.
4. 앱이 다른 관리되는 앱에서 데이터를 수신할 수 있는지 확인합니다.

기타 데이터 보호 설정

앱이 추가 변경을 수행할 때까지 다음 데이터 보호 설정이 적용되지 않습니다. 이 단계에서는 이러한 설정을 테스트할 필요가 없습니다. 자세한 내용은 7단계: 앱 참여 기능을 참조하세요.

시나리오 앱 보호 정책 설정 다음과 같은 경우 지원을 구현해야 합니다.
데이터 복사본 저장 조직 데이터 복사본 저장 응용 프로그램에서 로컬 또는 클라우드 저장소에 데이터를 저장할 수 있습니다.
저장소에서 데이터 열기 조직 문서에 데이터 열기 애플리케이션은 로컬 또는 클라우드 저장소에서 데이터를 열 수 있습니다.
관리되는 알림 콘텐츠 조직 데이터 알림 앱의 알림 내에 사용자 데이터가 포함됩니다.
백업 및 복원 Android 백업 서비스에 조직 데이터 백업 앱이 Android 백업 기능을 사용하여 사용자 데이터를 공유합니다.

조건부 실행 테스트

조건부 실행 설정은 구성 가능한 디바이스 전체 또는 앱별 기준에 따라 앱에 대한 액세스를 제한하는 앱 보호 정책 기능의 하위 집합입니다. 이러한 설정에는 조건(예: "최소 OS 버전") 및 작업(예: "액세스 차단")이 모두 포함됩니다. 조건부 시작 작업은 다음 중 하나일 수 있습니다.

  • 경고: 디바이스 또는 앱이 기준에 실패하면 최종 사용자에게 경고 대화 상자가 표시됩니다. 여전히 모든 앱 데이터에 액세스할 수 있습니다.
  • 액세스 차단: 디바이스 또는 앱이 기준에 실패하면 최종 사용자에게 경고 대화 상자가 표시됩니다. 기준을 충족하거나 앱에서 관리 계정을 제거할 때까지 앱에 들어가거나 앱 데이터에 액세스할 수 없습니다.
  • 데이터 지우기: 디바이스 또는 앱이 기준에 실패하면 관리 계정과 연결된 모든 회사 데이터가 지워집니다. 사용자는 데이터가 제거되기 전에 조건을 충족할 기회를 갖지 못합니다.

일부 조건부 시작 설정은 여러 값과 작업으로 구성할 수 있습니다. 예시:

  • 최소 OS 버전, 값 "10.0", 작업이 "경고"로 설정되었습니다.
  • 최소 OS 버전, 값 "9.0", 작업이 "액세스 차단"으로 설정됨
  • 최소 OS 버전, 값 "8.0", 작업이 "데이터 삭제"로 설정되었습니다.

이 단계의 통합 단계를 완료하면 이제 앱에서 모든 조건부 실행 기능을 지원합니다. 다음과 같이 정책 항목을 변경하여 조건부 실행 기능에 익숙해지세요.

  • 구성된 모든 조건부 시작 설정을 통과합니다.
  • "경고" 작업으로 설정된 조건부 시작 설정에 실패합니다.
  • "액세스 차단" 작업으로 설정된 조건부 시작 설정에 실패합니다.
  • "데이터 지우기" 작업으로 설정된 조건부 시작 설정에 실패합니다.

문제 해결

첫 번째 정책 응용 프로그램 테스트 문제 해결

위의 첫 번째 정책 애플리케이션 테스트 단계에 따라 다음과 같은 예기치 않은 동작이 발생할 수 있습니다.

관리 계정으로 로그인한 후 회사 포털을 설치하라는 메시지가 표시되지 않음(7단계)

먼저 Intune 관리 센터를 방문하여 앱 보호 정책이 테스트 계정을 대상으로 하는지 다시 검사합니다.

둘째, 소스 코드에서 에 대한 registerAccountForMAM 호출 및 구현MAMServiceAuthenticationCallback을 다시 검사합니다. 전자가 적시에 호출되지 않았거나 후자가 유효한 토큰을 제대로 제공하지 않은 경우 회사 포털 프롬프트가 표시되지 않습니다.

마지막으로, 등록 결과 코드에 대한 로그(또는 디버깅)를 확인하거나 계정을 명시적으로 호출 getRegisteredAccountStatus 합니다. NOT_LICENSED와 같은 코드는 테스트 계정의 구성 문제를 나타낼 수 있습니다.

로그인한 후 액세스 권한 가져오기 화면이 표시되지 않음(10단계)

회사 포털이 이전에 설치되지 않은 경우 액세스 권한 가져오기 화면을 표시하고 정책을 올바르게 적용하려면 애플리케이션을 다시 시작하거나 완전히 다시 시작해야 할 수 있습니다. 이는 SDK 통합 앱이 회사 포털 앱 내에서 코드를 활용하는 방법을 기반으로 예상되는 결과입니다.

앱을 다시 시작하고 다시 로그인한 후에도 액세스 권한 가져오기 화면이 여전히 표시되지 않는 경우 SDK가 계정을 등록하거나 계정에 대한 정책을 검색하지 못하는 것일 수 있습니다. 소스 코드의 구현을 다시 검사합니다.MAMServiceAuthenticationCallback

로그인 후 앱 PIN을 설정하거나 입력하는 화면이 표시되지 않음(11단계)

테스트 장치에 다른 SDK 통합 애플리케이션이 있습니까? 앱 PIN은 모든 관리되는 앱 간에 공유되며, SDK에는 관리되는 앱을 실행하거나 다시 시작할 때마다 최종 사용자에게 PIN을 묻는 메시지가 표시되지 않도록 하는 전역 타이머가 있습니다.

그렇지 않으면 Intune 관리 센터로 이동하여 앱 보호 정책에서 앱 PIN을 사용하도록 설정하고 테스트 계정을 대상으로 하는지 다시 검사합니다.

최후의 수단으로 장치를 다시 시작하면 PIN 타이머가 초기화됩니다. 장치를 다시 시작한 후 PIN 화면이 표시되지 않으면 정책에서 올바르게 구성되지 않았을 수 있습니다.

액세스 받기 화면이 표시되지만 스크린샷을 계속 사용할 수 있음(12단계)

정책을 검색하는 동안 잘못된 정책이 적용됩니다. 먼저 Intune 관리 센터를 방문하여 앱 보호 정책이 스크린샷을 사용하지 않도록 설정하고 테스트 계정을 대상으로 하는지 다시 검사합니다. 둘째, 진단 콘솔(위에서 설명)을 사용하여 앱에 대해 풀다운된 정책을 검사합니다. 두 정책 모두에서 스크린샷을 차단해야 한다고 확인하면 Gradle 빌드 플러그인 구성을 검사하여 MAM을 대체하고 있는지 확인합니다.

로그아웃한 후 앱이 충돌하거나 종료되는 것 같음(13단계)

이전에 등록하고 정책이 적용된 계정의 등록을 취소하면 SDK에서 해당 계정과 연결된 데이터가 삭제됩니다. 앱 프로세스 종료가 예상됩니다.

로그아웃한 후에도 스크린샷이 계속 차단됨(14단계)

소스 코드에서 에 대한 unregisterAccountForMAM()호출을 다시 검사합니다. 로그아웃한 후에도 정책이 계속 적용되는 경우 계정이 제대로 등록 및 등록 취소되지 않았을 수 있습니다.

데이터 보호 테스트 문제 해결

위의 데이터 보호 테스트 단계를 수행하면 다음과 같은 예기치 않은 동작이 발생할 수 있습니다.

앱에서 정책을 수신하거나 적용하지 않음

먼저, 앱 보호 정책이 테스트 계정을 포함하는 그룹을 대상으로 지정되는지 확인합니다. 자세한 내용은 Microsoft Intune에서 앱 보호 정책 설정의 유효성을 검사하는 방법을 참조하세요.

둘째, 클라이언트 진단 정보를 검사하여 SDK가 구성된 정책을 수신했는지 확인합니다. 그렇지 않은 경우 앱의 구현 MAMServiceAuthenticationCallbackregisterAccountForMAM호출을 검사합니다. 또한 로그 또는 디버그를 검사하여 MAMEnrollmentManager.Result.

내 앱이 관리되지 않는 앱에 데이터를 공유할 수 있음

"다른 앱으로 조직 데이터 보내기"가 "정책 관리 앱"으로 설정되어 있는지 확인합니다. Microsoft Intune 관리 센터를 확인하여 정책이 올바르게 구성되고 대상으로 지정되었는지 확인합니다. 클라이언트 진단 정보를 확인하여 SDK가 구성된 정책을 수신했는지 확인합니다.

다음으로, 정책이 올바르게 구성되고 검색된 경우 정책이 적용되고 있는지 검사합니다. 앱에서 정책을 수신하거나 적용하지 않습니다.

내 앱이 다른 관리되는 앱과 데이터를 공유할 수 없습니다.

과 다른 관리형 앱 모두를 대상으로 하는 앱 보호 정책 설정을 확인합니다. 두 앱에 동일한 정책 대상을 두는 것이 좋습니다. 앱을 대상으로 하는 정책은 "다른 앱으로 조직 데이터 보내기"를 "정책 관리 앱"으로 설정해야 합니다. 다른 앱을 대상으로 하는 정책을 확인합니다. "다른 앱에서 데이터 수신"이 "없음"으로 설정된 경우 이 동작은 예상된 것입니다.

내 앱이 관리되지 않는 앱에서 데이터를 받을 수 있음

"다른 앱에서 데이터 받기"가 "정책 관리 앱"으로 설정되어 있는지 확인합니다. Microsoft Intune 관리 센터를 확인하여 정책이 올바르게 구성되고 대상으로 지정되었는지 확인합니다. 클라이언트 진단 정보를 확인하여 SDK가 구성된 정책을 수신했는지 확인합니다.

다음으로, 정책이 올바르게 구성되고 검색된 경우 정책이 적용되고 있는지 검사합니다. 앱에서 정책을 수신하거나 적용하지 않습니다.

내 앱이 다른 관리되는 앱에서 데이터를 받을 수 없습니다.

과 다른 관리형 앱 모두를 대상으로 하는 앱 보호 정책 설정을 확인합니다. 두 앱에 동일한 정책 대상을 두는 것이 좋습니다. 앱을 대상으로 하는 정책에는 "다른 앱에서 데이터 받기"가 "정책 관리 앱"으로 설정되어 있어야 합니다. 다른 앱을 대상으로 하는 정책을 확인합니다. "다른 앱으로 조직 데이터 보내기"가 "없음"으로 설정된 경우 이 동작은 예상된 것입니다.

다음 단계

위의 모든 종료 조건 을 완료하면 이제 앱이 단일 ID로 성공적으로 통합되고 모든 기본 앱 보호 정책을 적용할 수 있습니다. 후속 섹션인 5단계: 다중 ID,6단계: App Configuration7단계: 앱 참여 기능은 앱에서 원하는 앱 보호 정책 지원에 따라 필요할 수도 있고 필요하지 않을 수도 있습니다. 이러한 섹션 중 앱에 적용되는지 확실하지 않은 경우 SDK 통합을 위한 주요 결정을 다시 검토하세요.