권한 선언 및 사용자에게 경고

확장 프로그램의 웹사이트 및 대부분의 Chrome API 액세스 기능은 선언된 권한에 따라 결정됩니다. 권한은 기능에 필요한 수준으로 제한해야 합니다. 권한을 제한하면 확장 프로그램의 기능이 설정되고 공격자에 의해 확장 프로그램이 손상된 경우 발생할 수 있는 데이터 발생이 줄어듭니다. 명시적, 최소, 선택적 권한을 구현하여 확장 프로그램과 사용자를 보호합니다.

권한 정리

권한은 Chrome API 또는 하나 이상의 호스트에 액세스 권한을 부여하는 일치 패턴을 참조하는 알려진 문자열입니다. 이러한 권한은 매니페스트에 나열되며 필수 권한 또는 선택적 권한으로 지정됩니다.

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

필요한 권한을 확장 프로그램의 핵심 기능에 필요한 수준으로 제한합니다. 확장 프로그램은 현재 필요한 것보다 더 많은 권한을 요청해서는 안 됩니다. 업데이트 시 필요할 수 있는 권한을 요청하여 미래에도 활용하지 마세요.

선택적 기능에 필요한 권한은 선택적 권한으로 등록해야 합니다. 이를 통해 사용자는 확장 프로그램을 제공할 수 있는 액세스 수준과 원하는 기능을 결정할 수 있습니다.

필수 권한 확인

간단한 확장 프로그램에서 여러 권한을 요청해야 할 수 있으며 많은 권한이 설치 시 경고를 표시합니다. 사용자는 경고가 제한되거나 권한에 설명된 확장 프로그램을 신뢰할 가능성이 더 높습니다.

설치 시 확장 프로그램 권한 경고

확장 프로그램의 핵심 기능과 필요한 권한을 확인합니다. 경고가 있는 권한이 필요한 기능은 선택사항으로 설정하는 것이 좋습니다.

이벤트로 선택적 권한 트리거

선택적 권한 샘플 확장 프로그램의 핵심 기능은 새 탭 페이지를 재정의합니다. 한 기능은 사용자의 일일 목표를 표시하는 것입니다. 이 기능에는 경고가 포함되지 않은 storage 권한만 필요합니다.

추가 기능을 사용 설정하는 확장 프로그램 버튼

이 확장 프로그램에는 사용자의 상위 사이트를 표시하는 추가 기능이 있습니다. 이 기능을 사용하려면 경고가 표시된 topSites 권한이 필요합니다.

topSites API에 대한 확장 프로그램 경고

경고를 선택사항으로 제공하는 권한을 사용하는 기능을 개발하고 이러한 기능을 유기적으로 도입하면 사용자에게 위험 부담 없이 확장 프로그램을 소개할 수 있습니다. 또한 이를 통해 사용자는 확장 프로그램으로 환경을 추가로 맞춤설정할 수 있으며 경고를 설명할 기회가 생깁니다.

ActiveTab 권한으로 대체

activeTab 권한은 사용자가 있는 사이트에 대한 임시 액세스 권한을 부여하고 확장 프로그램이 현재 탭의 "tabs" 권한을 사용할 수 있도록 허용합니다. 대부분의 경우 "<all_urls>"가 필요하지 않으며 설치 시 경고가 표시되지 않습니다.

ActiveTab이 없는 경우:

활성 탭이 없는 권한 UI

activeTab을 사용하는 경우:

ActiveTab이 있는 권한 UI

activeTab 권한은 사용자가 확장 프로그램을 호출할 때 확장 프로그램에 현재 활성 탭에 대한 임시 액세스 권한을 부여합니다. 확장 프로그램이 손상된 경우 공격자는 사용자가 액세스 권한을 얻기 전에 확장 프로그램을 호출할 때까지 기다려야 하며 탭이 탐색되거나 닫힐 때까지만 액세스 권한이 지속됩니다.

탭에 activeTab 권한이 사용 설정되어 있으면 확장 프로그램에서 다음 작업을 할 수 있습니다.

  • 해당 탭에서 tabs.executeScript 또는 tabs.insertCSS를 호출합니다.
  • tabs.Tab 객체를 반환하는 API를 통해 탭의 URL, 제목, 파비콘을 가져옵니다.
  • webRequest API를 사용하여 탭에서 탭의 기본 프레임 원본에 대한 네트워크 요청을 가로챕니다. 확장 프로그램이 일시적으로 탭의 기본 프레임 원본에 대한 호스트 권한을 가져옵니다.

다음 사용자 동작은 activeTab를 사용 설정합니다.

액세스 허용

확장 프로그램이 file:// URL에 액세스해야 하거나 시크릿 모드에서 작동해야 하는 경우 사용자는 확장 프로그램 세부정보 페이지(chrome://extensions)에서 해당 기능에 대한 액세스를 사용 설정해야 합니다.

확장 프로그램 세부정보 페이지에서 파일 URL 및 시크릿 모드 허용

확장 프로그램은 extension.isAllowedIncognitoAccess()를 호출하여 시크릿 모드로 사용 설정되어 있는지 또는 extension.isAllowedFileSchemeAccess()를 사용하여 file:// URL에서 실행될 수 있는지 감지할 수 있습니다 .

권한 이해하기

권한 경고는 API가 확장 프로그램 사용자에게 부여하는 기능을 설명하기 위해 존재합니다. 하지만 이러한 경고 중 일부는 처음에는 명확하지 않을 수도 있습니다. 예를 들어 "tabs" 권한을 추가하면 관련이 없어 보이는 경고가 표시됩니다. 확장 프로그램이 탐색 활동을 읽을 수 있습니다. chrome.tabs API는 새 탭을 여는 데만 사용할 수 있지만, tabs.Tab 객체를 사용하여 새로 열린 모든 탭과 연결된 URL을 보는 데도 사용할 수 있습니다.

가능하면 경고가 표시되지 않도록 하려면 선택적 권한이나 덜 강력한 API를 구현하세요.

경고 보기

확장 프로그램이 압축해제된 파일로 로드되는 경우 권한 경고가 표시되지 않습니다. 확장 프로그램의 권한 경고를 보려면 chrome://extensions로 이동하여 개발자 모드가 사용 설정되어 있는지 확인한 후 확장 프로그램 압축을 클릭합니다.

개발자 모드를 선택한 후 확장 프로그램 패키지를 클릭합니다.

확장 프로그램 루트 디렉터리 필드에 확장 프로그램 폴더 경로를 지정한 다음 확장 프로그램 압축 버튼을 클릭합니다. 최초 패키지의 비공개 키 필드를 무시합니다.

확장 프로그램 경로를 지정한 다음 &#39;확장 프로그램 압축&#39;을 클릭합니다.

Chrome에서 확장 프로그램의 비공개 키가 포함된 .crx 파일과 .pem 파일, 두 개의 파일을 만듭니다.

패키지 확장 프로그램 파일

비공개 키를 잃어버리지 마세요. .pem 파일은 안전한 장소에 보관해야 합니다. 확장 프로그램을 업데이트하는 데 필요합니다.

.crx 파일을 Chrome 확장 프로그램의 관리 페이지에 드롭하여 설치합니다.

파일을 드롭하여 설치

.crx 파일을 삭제하면 브라우저에서 확장 프로그램을 추가할 수 있는지 묻고 경고를 표시합니다.

새 탭 확장 프로그램에 대한 경고

경고가 있는 권한

참고: 권한 테이블이 최선의 방식으로 업데이트되며 현재 경고와 약간의 불일치가 있을 수 있습니다. 또한 일부 권한은 다른 권한과 페어링될 때 경고를 표시하지 않을 수도 있습니다. 예를 들어 확장 프로그램에서 "<all_urls>"도 요청하는 경우 "tabs" 경고가 표시되지 않습니다. 확장 프로그램 권한에 표시된 최근 경고를 확인하려면 경고 보기의 단계를 따르세요.

권한 설명 주의
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
확장 프로그램에 모든 호스트에 대한 액세스 권한을 부여합니다. activeTab 권한을 사용하면 호스트 권한을 선언하지 않을 수도 있습니다. 방문한 웹사이트의 모든 데이터 읽기 및 변경
"https://HostName.com/" 확장 프로그램에 "https://HostName.com/"에 대한 액세스 권한을 부여합니다. activeTab 권한을 사용하면 호스트 권한을 선언하지 않을 수도 있습니다. HostName.com의 데이터 읽기 및 변경
"bookmarks" 확장 프로그램에 chrome.bookmarks API에 대한 액세스 권한을 부여합니다. 북마크 읽기 및 변경
"clipboardRead" 확장 프로그램이 document.execCommand('paste')를 사용하는 경우 필수입니다. 복사하여 붙여넣는 데이터 읽기
"clipboardWrite" 확장 프로그램이 document.execCommand('copy') 또는 document.execCommand('cut')를 사용함을 나타냅니다. 복사하여 붙여넣는 데이터 수정하기
"contentSettings" 확장 프로그램에 chrome.contentSettings API에 대한 액세스 권한을 부여합니다. 쿠키, 자바스크립트, 플러그인, 위치정보, 마이크, 카메라와 같은 기능에 대한 웹사이트의 액세스 권한을 제어하는 설정을 변경합니다.
"debugger" 확장 프로그램에 chrome.debugger API에 대한 액세스 권한을 부여합니다.
  • 페이지 디버거 백엔드에 액세스
  • 방문한 웹사이트의 모든 데이터 읽기 및 변경
"declarativeNetRequest" 확장 프로그램에 chrome.declarativeNetRequest API에 대한 액세스 권한을 부여합니다. 페이지 콘텐츠 차단하기
"desktopCapture" 확장 프로그램에 chrome.desktopCapture API에 대한 액세스 권한을 부여합니다. 화면의 콘텐츠 캡처
"downloads" 확장 프로그램에 chrome.downloads API에 대한 액세스 권한을 부여합니다. 다운로드 관리하기
"geolocation" 확장 프로그램에서 사용자에게 권한 요청 메시지를 표시하지 않고 HTML5 Geolocation API를 사용하도록 허용합니다. 물리적 위치 감지
"history" 확장 프로그램에 chrome.history API에 대한 액세스 권한을 부여합니다. 방문 기록 읽기 및 변경
"management" 확장 프로그램에 chrome.management API에 대한 액세스 권한을 부여합니다. 앱, 확장 프로그램, 테마 관리하기
"nativeMessaging" 확장 프로그램에 네이티브 메시징 API에 대한 액세스 권한을 부여합니다. 협력 중인 네이티브 애플리케이션과 통신
"notifications" 확장 프로그램에 chrome.notifications API에 대한 액세스 권한을 부여합니다. 알림 표시
"pageCapture" 확장 프로그램에 chrome.pageCapture API에 대한 액세스 권한을 부여합니다. 방문한 웹사이트의 모든 데이터 읽기 및 변경
"privacy" 확장 프로그램에 chrome.privacy API에 대한 액세스 권한을 부여합니다. 개인 정보 보호 관련 설정 변경하기
"proxy" 확장 프로그램에 chrome.proxy API에 대한 액세스 권한을 부여합니다. 방문한 웹사이트의 모든 데이터 읽기 및 변경
"system.storage" 확장 프로그램에 chrome.system.storage API에 대한 액세스 권한을 부여합니다. 저장 기기 식별 및 꺼내기
"tabCapture" 확장 프로그램에 chrome.tabCapture API 액세스 권한을 부여합니다. 방문한 웹사이트의 모든 데이터 읽기 및 변경
"tabs" 확장 프로그램에 chrome.tabs, chrome.windows를 포함한 여러 API에서 사용하는 Tab 객체의 권한 있는 필드에 대한 액세스 권한을 부여합니다. 대부분의 경우 확장 프로그램은 이러한 API를 활용하기 위해 "tabs" 권한을 선언할 필요가 없습니다. 방문 기록 읽기
"topSites" 확장 프로그램에 chrome.topSites API에 대한 액세스 권한을 부여합니다. 자주 방문한 웹사이트 목록 읽기
"ttsEngine" 확장 프로그램에 chrome.ttsEngine API에 대한 액세스 권한을 부여합니다. 합성 음성을 사용하여 음성으로 된 모든 텍스트 읽기
"webNavigation" 확장 프로그램에 chrome.webNavigation API에 대한 액세스 권한을 부여합니다. 방문 기록 읽기

권한 업데이트

추가 권한을 사용하여 확장 프로그램을 업데이트하면 일시적으로 사용 중지될 수 있습니다. 사용자는 새로운 경고에 동의한 후 다시 사용 설정해야 합니다.

사용자가 이제 tabs 권한이 포함된 확장 프로그램을 수동으로 업데이트하면 관리 페이지에 경고가 표시됩니다.

탭 권한 추가

확장 프로그램이 자동으로 업데이트되면 사용자가 새 권한에 동의할 때까지 확장 프로그램이 사용 중지됩니다.

확장 프로그램이 사용 중지되었습니다.

권한에 동의

새 기능을 선택사항으로 설정하고 매니페스트optional_permissions에 새 권한 업데이트를 추가하면 이 문제를 피할 수 있습니다.