모든 Google Drive 파일, 폴더, 공유 드라이브에는 연결된 permissions
리소스가 있습니다. 각 리소스는 특정 type
(user
, group
, domain
, anyone
) 및 role
(owner
, organizer
, fileOrganizer
, writer
, commenter
, reader
)에 대한 권한을 식별합니다. 예를 들어 파일에는 특정 사용자 (type=user
)에게 읽기 전용 액세스 권한 (role=reader
)을 부여하는 권한이 있을 수 있으며, 다른 권한은 특정 그룹 (type=group
)의 구성원에게 파일에 댓글을 추가할 수 있는 기능 (role=commenter
)을 부여할 수 있습니다.
역할 및 각 역할에서 허용되는 작업의 전체 목록은 역할 및 권한을 참고하세요.
권한 작동 방식
폴더의 권한 목록은 아래로 전파됩니다. 모든 하위 파일과 폴더는 상위 폴더의 권한을 상속합니다. 권한이나 계층 구조가 변경될 때마다 모든 중첩 폴더를 통해 재귀적으로 전파가 발생합니다. 예를 들어 폴더에 파일이 있고 해당 폴더가 다른 폴더 내로 이동되면 새 폴더의 권한이 파일에 전파됩니다. 새 폴더에서 파일 사용자에게 '작성자'와 같은 새 역할을 부여하면 이전 역할이 재정의됩니다.
반대로 파일이 폴더에서 role=writer
를 상속받고 '읽기 권한 사용자' 역할을 제공하는 다른 폴더로 이동하면 이제 파일이 role=reader
를 상속받습니다.
공유 드라이브의 파일 또는 폴더에서 상속된 권한을 삭제할 수 없습니다. 대신 이러한 권한은 상속된 직접 또는 간접 상위 항목에서 조정해야 합니다. '내 드라이브' 또는 '공유 문서함'에 있는 항목에서 상속된 권한을 삭제할 수 있습니다.
반대로 내 드라이브의 파일 또는 폴더에서는 상속된 권한을 재정의할 수 있습니다. 따라서 파일이 내 드라이브 폴더에서 role=writer
를 상속하는 경우 파일에 role=reader
를 설정하여 권한 수준을 낮출 수 있습니다.
동일한 파일에 대한 동시 권한 작업은 지원되지 않습니다. 마지막 업데이트만 적용됩니다.
파일 기능 이해하기
permissions
리소스는 궁극적으로 현재 사용자가 파일 또는 폴더에서 작업을 수행할 수 있는 능력을 결정하지 않습니다.
대신 files
리소스에는 파일 또는 폴더에서 작업을 실행할 수 있는지 여부를 나타내는 데 사용되는 불리언 capabilities
필드 모음이 포함되어 있습니다.
Google Drive API는 파일 또는 폴더와 연결된 현재 사용자의 permissions
리소스를 기반으로 이러한 필드를 설정합니다.
예를 들어 Alex가 앱에 로그인하여 파일을 공유하려고 하면 파일에 대한 권한이 있는지 Alex의 역할이 확인됩니다. 역할에서 파일 공유를 허용하는 경우 파일과 관련된 capabilities
(예: canShare
)는 역할을 기준으로 설정됩니다. Alex가 파일을 공유하려고 하면 앱에서 capabilities
를 확인하여 canShare
이 true
로 설정되어 있는지 확인합니다.
파일 기능 가져오기
앱이 파일을 열면 파일의 기능을 확인하고 현재 사용자의 권한을 반영하도록 UI를 렌더링해야 합니다. 예를 들어 사용자에게 파일에 대한 canComment
기능이 없는 경우 UI에서 댓글 기능이 사용 중지되어야 합니다.
기능을 확인하려면 fileId
경로 매개변수와 fields
매개변수를 capabilities
필드로 설정하여 files
리소스에서 get
메서드를 호출합니다. fields
매개변수를 사용하여 필드를 반환하는 방법에 관한 자세한 내용은 특정 필드 반환을 참고하세요.
다음 코드 샘플은 사용자 권한을 확인하는 방법을 보여줍니다. 응답은 사용자가 파일에 대해 갖는 기능 목록을 반환합니다. 각 기능은 사용자가 취할 수 있는 세부 작업에 해당합니다. 일부 필드는 공유 드라이브의 항목에 대해서만 채워집니다.
요청
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
응답
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeItemDownloadRestriction": true, "canChangeSecurityUpdateEnabled": false, "canChangeViewersCanCopyContent": true, "canComment": true, "canCopy": true, "canDelete": true, "canDisableInheritedPermissions": false, "canDownload": true, "canEdit": true, "canEnableInheritedPermissions": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyEditorContentRestriction": true, "canModifyOwnerContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemIntoTeamDrive": true, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveContentRestriction": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Drive 리소스 공유 시나리오
공유 시나리오에는 5가지 유형이 있습니다.
내 드라이브에서 파일을 공유하려면 사용자에게
role=writer
또는role=owner
권한이 있어야 합니다.writersCanShare
불리언 값이 파일에 대해false
로 설정된 경우 사용자에게role=owner
이 있어야 합니다.role=writer
권한이 있는 사용자에게 만료일 및 시간에 따라 관리되는 임시 액세스 권한이 있는 경우 파일을 공유할 수 없습니다. 자세한 내용은 파일 액세스 권한을 제한하는 만료일 설정하기를 참고하세요.
내 드라이브에서 폴더를 공유하려면 사용자에게
role=writer
또는role=owner
권한이 있어야 합니다.파일의
writersCanShare
불리언 값이false
로 설정된 경우 사용자에게 더 허용적인role=owner
이 있어야 합니다.role=writer
이 있는 내 드라이브 폴더에서는 만료일과 만료 시간으로 관리되는 임시 액세스가 허용되지 않습니다. 자세한 내용은 파일 액세스를 제한하는 만료일 설정하기를 참고하세요.
공유 드라이브의 파일을 공유하려면 사용자에게
role=writer
,role=fileOrganizer
또는role=organizer
권한이 있어야 합니다.writersCanShare
설정은 공유 드라이브의 항목에는 적용되지 않습니다. 항상true
로 설정된 것처럼 처리됩니다.
공유 드라이브에서 폴더를 공유하려면 사용자에게
role=organizer
권한이 있어야 합니다.- 공유 드라이브의
sharingFoldersRequiresOrganizerPermission
제한이false
로 설정된 경우role=fileOrganizer
권한이 있는 사용자는 해당 공유 드라이브의 폴더를 공유할 수 있습니다.
- 공유 드라이브의
공유 드라이브 멤버십을 관리하려면 사용자에게
role=organizer
권한이 있어야 합니다. 사용자와 그룹만 공유 드라이브의 구성원이 될 수 있습니다.
fields 매개변수 사용
응답에서 반환할 필드를 지정하려면 permissions
리소스의 메서드를 사용하여 fields
시스템 매개변수를 설정하면 됩니다. fields
매개변수를 생략하면 서버는 메서드에 특정한 기본 필드 집합을 반환합니다.
예를 들어 list
메서드는 각 파일에 대해 id
, type
, kind
, role
필드만 반환합니다. 다른 필드를 반환하려면 특정 필드 반환을 참고하세요.
권한 만들기
권한을 만들 때는 다음 두 필드가 필요합니다.
type
:type
은 권한 범위 (user
,group
,domain
또는anyone
)를 식별합니다.type=user
이 있는 권한은 특정 사용자에게 적용되는 반면type=domain
이 있는 권한은 특정 도메인의 모든 사용자에게 적용됩니다.role
:role
필드는type
가 실행할 수 있는 작업을 식별합니다. 예를 들어type=user
및role=reader
권한이 있으면 특정 사용자에게 파일 또는 폴더에 대한 읽기 전용 액세스 권한이 부여됩니다. 또는type=domain
및role=commenter
권한을 사용하면 도메인의 모든 사용자가 파일에 댓글을 추가할 수 있습니다. 역할 및 각 역할에서 허용되는 작업의 전체 목록은 역할 및 권한을 참고하세요.
type=user
또는 type=group
인 권한을 만들 때는 특정 사용자 또는 그룹을 권한에 연결하는 emailAddress
도 제공해야 합니다.
type=domain
인 권한을 만들 때는 특정 도메인을 권한에 연결하는 domain
도 제공해야 합니다.
권한을 만들려면 다음 단계를 따르세요.
- 연결된 파일 또는 폴더의
fileId
경로 매개변수와 함께permissions
리소스에서create
메서드를 사용합니다. - 요청 본문에서
type
및role
을 지정합니다. type=user
또는type=group
인 경우emailAddress
를 제공합니다.type=domain
인 경우domain
를 제공합니다.
다음 코드 샘플은 권한을 만드는 방법을 보여줍니다. 응답은 할당된 permissionId
을 포함하여 permissions
리소스의 인스턴스를 반환합니다.
요청
POST https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
응답
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
공유 대상 그룹 사용
공유 대상 그룹은 사용자에게 항목을 공유하도록 권장할 수 있는 부서나 팀 등의 사용자 그룹입니다. 사용자가 전체 조직이 아닌 특정 대상 또는 제한된 대상과 항목을 공유하도록 할 수 있습니다. 공유 대상 그룹을 사용하면 데이터의 보안 및 개인 정보 보호를 개선하고 사용자가 적절하게 공유할 수 있습니다. 자세한 내용은 타겟 고객 정보를 참고하세요.
공유 대상 그룹을 사용하려면 다음 단계를 따르세요.
Google 관리 콘솔에서 메뉴 > 디렉터리 > 공유 대상 그룹으로 이동합니다.
이 작업을 수행하려면 최고 관리자 권한이 있는 계정으로 로그인해야 합니다.
공유 대상 그룹 목록에서 공유 대상 그룹의 이름을 클릭합니다. 공유 대상 그룹을 만들려면 공유 대상 그룹 만들기를 참고하세요.
공유 대상 그룹 URL(
https://admin.google.com/ac/targetaudiences/ID
)에서 고유 ID를 복사합니다.type=domain
로 권한을 만들고domain
필드를ID.audience.googledomains.com
로 설정합니다.
사용자가 타겟 잠재고객과 상호작용하는 방식을 확인하려면 링크 공유 사용자 환경을 참고하세요.
권한 가져오기
권한을 가져오려면 fileId
및 permissionId
경로 매개변수와 함께 permissions
리소스에서 get
메서드를 사용합니다. 권한 ID를 모르는 경우 list
메서드를 사용하여 모든 권한을 나열할 수 있습니다.
다음 코드 샘플은 ID로 권한을 가져오는 방법을 보여줍니다. 응답은 permissions
리소스의 인스턴스를 반환합니다.
요청
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissionsPERMISSION_ID
응답
{
"kind": "drive#permissionList",
"permissions": [
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
]
}
모든 권한 나열
파일, 폴더 또는 공유 드라이브의 권한을 나열하려면 fileId
경로 매개변수와 함께 permissions
리소스에서 list
메서드를 사용합니다.
다음 쿼리 매개변수를 전달하여 권한의 페이지로 나누기를 맞춤설정하거나 권한을 필터링합니다.
pageSize
: 페이지당 반환할 최대 권한 수입니다. 공유 드라이브의 파일에 대해 설정되지 않은 경우 최대 100개의 결과가 반환됩니다. 공유 드라이브에 없는 파일에 대해 설정되지 않은 경우 전체 목록이 반환됩니다.pageToken
: 이전 목록 호출에서 수신된 페이지 토큰입니다. 후속 페이지를 가져오려면 이 토큰을 제공하세요.supportsAllDrives
: 요청하는 앱이 내 드라이브와 공유 드라이브를 모두 지원하는지 여부입니다.useDomainAdminAccess
: 도메인 관리자로 요청을 실행하려면true
로 설정합니다.fileId
매개변수가 공유 드라이브를 참조하고 요청자가 공유 드라이브가 속한 도메인의 관리자인 경우 자세한 내용은 도메인 관리자로 공유 드라이브 관리하기를 참고하세요.includePermissionsForView
: 응답에 포함할 추가 뷰의 권한입니다.published
만 지원됩니다.
다음 코드 샘플은 모든 권한을 가져오는 방법을 보여줍니다. 이 응답은 파일, 폴더 또는 공유 드라이브의 권한 목록을 반환합니다.
요청
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
응답
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
권한 업데이트
파일 또는 폴더의 권한을 업데이트하려면 할당된 역할을 변경하면 됩니다. 역할 소스를 찾는 방법에 대한 자세한 내용은 역할 소스 확인을 참고하세요.
fileId
경로 매개변수가 연결된 파일, 폴더 또는 공유 드라이브로 설정되고permissionId
경로 매개변수가 변경할 권한으로 설정된permissions
리소스에서update
메서드를 호출합니다.permissionId
를 찾으려면fileId
경로 매개변수를 사용하여permissions
리소스에서list
메서드를 사용합니다.요청에서 새
role
를 식별합니다.
사용자 또는 그룹이 이미 멤버인 경우에도 공유 드라이브의 개별 파일 또는 폴더에 대한 권한을 부여할 수 있습니다. 예를 들어 Alex는 공유 드라이브의 멤버십에 role=commenter
가 포함되어 있습니다. 하지만 앱은 공유 드라이브의 파일에 대해 Alex에게 role=writer
를 부여할 수 있습니다. 이 경우 새 역할이 멤버십을 통해 부여된 역할보다 더 허용적이므로 새 권한이 파일 또는 폴더의 유효한 역할이 됩니다.
패치 시맨틱을 통해 업데이트를 적용할 수 있습니다. 즉, 리소스를 부분적으로 수정할 수 있습니다. 요청에서 수정할 필드를 명시적으로 설정해야 합니다. 요청에 포함되지 않은 필드는 기존 값을 유지합니다. 자세한 내용은 부분 리소스 작업을 참고하세요.
다음 코드 샘플은 파일 또는 폴더의 권한을 commenter
에서 writer
로 변경하는 방법을 보여줍니다. 응답은 permissions
리소스의 인스턴스를 반환합니다.
요청
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
응답
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
역할 소스 확인
파일 또는 폴더의 역할을 변경하려면 역할의 소스를 알아야 합니다. 공유 드라이브의 경우 역할의 소스는 공유 드라이브의 멤버십, 폴더의 역할 또는 파일의 역할을 기반으로 할 수 있습니다.
공유 드라이브 또는 드라이브 내 항목의 역할 소스를 확인하려면 fileId
및 permissionId
경로 매개변수와 fields
매개변수가 permissionDetails
필드로 설정된 permissions
리소스에서 get
메서드를 호출합니다.
permissionId
를 찾으려면 fileId
경로 매개변수를 사용하여 permissions
리소스에서 list
메서드를 사용합니다. list
요청에서 permissionDetails
필드를 가져오려면 fields
매개변수를 permissions/permissionDetails
로 설정합니다.
이 필드는 사용자, 그룹 또는 도메인의 모든 상속된 파일 권한과 직접 파일 권한을 열거합니다.
다음 코드 샘플은 역할 소스를 확인하는 방법을 보여줍니다. 응답은 permissions
리소스의 permissionDetails
를 반환합니다. inheritedFrom
필드는 권한이 상속된 항목의 ID를 제공합니다.
요청
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
?fields=permissionDetails&supportsAllDrives=true
응답
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
일괄 요청으로 여러 권한 업데이트
일괄 요청을 사용하여 여러 권한을 수정하는 것이 좋습니다.
다음은 클라이언트 라이브러리를 사용하여 일괄 권한 수정을 실행하는 예입니다.
자바
Python
Node.js
PHP
.NET
권한 삭제
파일 또는 폴더에 대한 액세스 권한을 취소하려면 fileId
및 permissionId
경로 매개변수가 권한 삭제로 설정된 permissions
리소스에서 delete
메서드를 호출합니다.
'내 드라이브'의 항목의 경우 상속된 권한을 삭제할 수 있습니다. 상속된 권한을 삭제하면 항목 및 하위 항목(있는 경우)에 대한 액세스 권한이 취소됩니다.
공유 드라이브에 있는 항목의 경우 상속된 권한을 취소할 수 없습니다. 대신 상위 파일 또는 폴더의 권한을 업데이트하거나 삭제하세요.
delete
메서드는 공유 드라이브 파일 또는 폴더에 직접 적용된 권한을 삭제하는 데도 사용됩니다.
다음 코드 샘플은 permissionId
를 삭제하여 액세스 권한을 취소하는 방법을 보여줍니다. 성공하면 응답 본문은 빈 JSON 객체입니다. 권한이 삭제되었는지 확인하려면 fileId
경로 매개변수를 사용하여 permissions
리소스에서 list
메서드를 사용합니다.
요청
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
만료일을 설정하여 파일 액세스 제한하기
민감한 프로젝트에서 사용자와 공동작업하는 경우 일정 시간이 지난 후 Drive의 특정 파일에 대한 액세스 권한을 제한해야 할 수 있습니다. 내 드라이브 파일에 대해 파일 액세스 권한의 만료일을 설정하여 액세스 권한을 제한 또는 삭제할 수 있습니다.
만료일을 설정하려면 다음 단계를 따르세요.
permissions
리소스에서create
메서드를 사용하고expirationTime
필드 (및 기타 필수 필드)를 설정합니다. 자세한 내용은 권한 만들기를 참고하세요.permissions
리소스에서update
메서드를 사용하고expirationTime
필드 (및 기타 필수 필드)를 설정합니다. 자세한 내용은 권한 업데이트를 참고하세요.
expirationTime
필드는 RFC 3339 날짜-시간을 사용하여 권한이 만료되는 시점을 나타냅니다. 만료 시간에는 다음과 같은 제한사항이 있습니다.
- 사용자 및 그룹 권한에만 설정할 수 있습니다.
- 시간은 미래여야 합니다.
- 시간은 현재로부터 1년을 초과할 수 없습니다.
만료일에 관한 자세한 내용은 다음 도움말을 참고하세요.
관련 주제
- 대기 중인 액세스 제안 관리하기
- 액세스가 제한된 폴더와 광범위한 액세스 권한이 있는 폴더 관리하기
- 파일 소유권 이전
- 파일 콘텐츠 보호하기
- 리소스 키를 사용하여 링크로 공유된 드라이브 파일에 액세스하기
- 역할 및 권한