다음을 통해 공유


스토리지 보안 유지

Browse sample. 샘플 찾아보기

이 문서에서는 .NET 다중 플랫폼 앱 UI(.NET MAUI) ISecureStorage 인터페이스를 사용하는 방법을 설명합니다. 이 인터페이스는 간단한 키/값 쌍을 안전하게 저장하는 데 도움이 됩니다.

인터페이스의 ISecureStorage 기본 구현은 속성을 통해 SecureStorage.Default 사용할 수 있습니다. ISecureStorage 인터페이스와 SecureStorage 클래스는 모두 네임스페이스에 Microsoft.Maui.Storage 포함됩니다.

시작하기

기능에 액세스 SecureStorage 하려면 다음 플랫폼별 설정이 필요합니다.

앱에 대한 자동 백업은 Android 6.0(API 레벨 23) 이상의 기능으로, 사용자의 앱 데이터(공유 기본 설정, 앱 내부 스토리지의 파일 및 기타 특정 파일)를 백업합니다. 앱을 다시 설치하거나 새 디바이스에 설치하면 데이터가 복원됩니다. 이는 백업되고 복원이 발생할 때 암호 해독할 수 없는 공유 기본 설정을 활용하는 데 영향을 줄 SecureStorage수 있습니다. .NET MAUI는 다시 설정할 수 있도록 키를 제거하여 이 사례를 자동으로 처리합니다. 또는 자동 백업을 사용하지 않도록 설정할 수 있습니다.

백업 사용 또는 사용 안 함

AndroidManifest.xml 파일에서 false로 설정 android:allowBackup 하여 전체 애플리케이션에 대해 자동 백업을 사용하지 않도록 선택할 수 있습니다. 이 방법은 다른 방법으로 데이터를 복원하려는 경우에만 권장됩니다.

<manifest ... >
    ...
    <application android:allowBackup="false" ... >
        ...
    </application>
</manifest>

선택적 백업

특정 콘텐츠가 백업되지 않도록 자동 백업을 구성할 수 있습니다. 사용자 지정 규칙 집합을 만들어 SecureStore 항목이 백업되지 않도록 제외할 수 있습니다.

  1. AndroidManifest.xml에서 android:fullBackupContent 특성을 설정합니다.

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. AndroidResource의 빌드 작업을 사용하여 Platforms/Android/Resources/xml 디렉터리에 auto_backup_rules.xml이라는 새 XML 파일을 만듭니다. 다음을 제외한 모든 공유 기본 설정을 포함하는 다음 콘텐츠를 설정합니다.SecureStorage

    <?xml version="1.0" encoding="utf-8"?>
    <full-backup-content>
        <include domain="sharedpref" path="."/>
        <exclude domain="sharedpref" path="${applicationId}.microsoft.maui.essentials.preferences.xml"/>
    </full-backup-content>
    

보안 스토리지 사용

다음 코드 예제에서는 보안 스토리지를 사용하는 방법을 보여 줍니다.

호출 GetAsync 할 때 예외가 throw되거나 SetAsync. 이 예외는 보안 스토리지, 암호화 키 변경 또는 데이터 손상을 지원하지 않는 디바이스에 의해 발생할 수 있습니다. 가능한 경우 설정을 제거하고 다시 추가하여 이를 처리하는 것이 가장 좋습니다.

값 작성

지정된 의 값을 보안 스토리지에 저장하려면:

await SecureStorage.Default.SetAsync("oauth_token", "secret-oauth-token-value");

값 읽기

보안 스토리지에서 값을 검색하려면:

string oauthToken = await SecureStorage.Default.GetAsync("oauth_token");

if (oauthToken == null)
{
    // No value is associated with the key "oauth_token"
}

GetAsync 와 연결된 값이 없으면 반환합니다 null.

값 제거

특정 값을 제거하려면 키를 제거합니다.

bool success = SecureStorage.Default.Remove("oauth_token");

모든 값을 제거하려면 다음 메서드를 RemoveAll 사용합니다.

SecureStorage.Default.RemoveAll();

플랫폼 간 차이점

이 섹션에서는 보안 스토리지 API와의 플랫폼별 차이점에 대해 설명합니다.

SecureStorage는 기본 설정 API를 사용하고 기본 설정 설명서에 설명된 것과 동일한 데이터 지속성을 따르며 파일 이름은 [YOUR-APP-PACKAGE-ID].microsoft.maui.essentials.preferences입니다. 그러나 데이터는 Android 보안 라이브러리에서 Android EncryptedSharedPreferences 클래스로 암호화됩니다. 이 라이브러리는 클래스를 래핑 SharedPreferences 하고 두 체계 접근 방식을 사용하여 키와 값을 자동으로 암호화합니다.

  • 키는 결정적으로 암호화되므로 키를 암호화하고 올바르게 조회할 수 있습니다.
  • 값은 AES-256 GCM을 사용하여 비결정적으로 암호화됩니다.

Android 보안 라이브러리에 대한 자세한 내용은 developer.android.com 보다 안전하게 데이터 작업을 참조하세요.

제한 사항

API가 적은 양의 텍스트를 저장하도록 설계되었기 때문에 많은 양의 텍스트를 저장하는 경우 성능에 영향을 줄 수 있습니다.