ACL
ACL (Access Control List, қол жеткізуді басқару тізімі) VK Object Storage сервисінде қандай пайдаланушыларға қандай операциялар рұқсат етілгенін бақылауға мүмкіндік береді. Әрбір бакет пен объектінің өз ACL-і бар, онда қол жеткізу құқықтарын алушылар және оларға берілген рұқсаттар көрсетіледі.
ACL бар бакеттер мен объектілерге операциялар жасау үшін келесі API әдістері қолжетімді:
- GetBucketACL — бакеттің ACL-ін алу.
- PutBucketACL — бакеттің ACL-ін орнату.
- GetObjectACL — объектінің ACL-ін алу.
- PutObjectACL — объектінің ACL-ін орнату.
ACL-ді бакет жасағанда немесе объект жүктегенде де, кейін де орнатуға болады. PutBucketACL және PutObjectACL әдістерінде ACL конфигурациясын екі тәсілмен беруге болады:
- Сұрау денесінде — ACL конфигурациясының XML-құрылымы түрінде. Бұл тәсіл тек бар бакеттер немесе объектілер үшін қолданылады.
- сұрау тақырыптарында. Бұл тәсіл бакет жасау немесе объект жүктеу кезінде де, сондай-ақ бар бакеттер немесе объектілер үшін де қолданылады.
Бір сұрауда осы тәсілдердің тек біреуін ғана пайдалануға болады.
XML форматындағы ACL конфигурациясы келесі элементтерден тұрады:
-
<Owner>— бакет иесінің канондық идентификаторын көрсетеді. Оны GetBucketACL әдісі арқылы немесе AWS CLI арқылы, сұратып бакеттің ACL-і туралы ақпаратты алу арқылы біліңіз. -
<Grant>— қай алушыға қандай рұқсаттар берілетінін анықтайды.<Grant>ішінде<Grantee>және<Permission>элементтері болады.-
<Grantee>— қол жеткізу құқықтарын алушыны атрибуттар арқылы көрсетеді:ID— құқықтарды алушының идентификаторы.Type— құқықтарды алушының түрі. Мысалдар:CanonicalUser,Group.
-
<Permission>— берілетін рұқсаттың түрін көрсетеді.
-
ACL конфигурациясының XML-құрылымының мысалы:
<AccessControlPolicy><Owner><ID>Owner-canonical-user-ID</ID><DisplayName>owner-display-name</DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>Owner-canonical-user-ID</ID><DisplayName>owner-display-name</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>
PUT сұрауларында ACL конфигурациясын көрсету үшін келесі тақырыптар қолданылады:
x-amz-acl— бакетке немесе объектіге алдын ала бапталған стандартты ACL тағайындайды.x-amz-grant-read— оқу рұқсатын (READ) орнатады.x-amz-grant-write— жазу рұқсатын (WRITE) орнатады.x-amz-grant-read-acp— ACL-ді оқу рұқсатын (READ_ACP) орнатады.x-amz-grant-write-acp— ACL-ді жазу рұқсатын (WRITE_ACP) орнатады.x-amz-grant-full-control— толық бақылау береді (FULL_CONTROL).
x-amz-acl тақырыбын бір сұрауда осы тізімдегі басқа тақырыптармен біріктіруге болмайды. Не стандартты ACL-ді пайдалануға, не құқықтарды алушыларды ашық түрде көрсетуге болады.
Бакеттер мен объектілерге қол жеткізу құқықтары келесі алушылар санаттарына берілуі мүмкін:
- Пайдаланушы VK Cloud.
- Жоба VK Cloud.
- Алдын ала анықталған метатоп.
VK Cloud пайдаланушысына қол жеткізу оның канондық идентификаторы (Canonical ID) бойынша беріледі. Бұл — VK Object Storage пайдаланушысының бірегей идентификаторы, әріптік-сандық тізбек түрінде болады. Мысал: fcd68908-XXXX-82ae2a5a251d.
VK Cloud пайдаланушысының канондық идентификаторын білу үшін, ACL-ді алыңыз — пайдаланушының қол жеткізу құқықтары бар бакет немесе объект үшін.
Пайдаланушыға қол жеткізуді беру үшін, сұрауда оның канондық идентификаторын көрсетіңіз:
-
XML-құрылым арқылы орнатқанда
Granteeблогының ішінде<ID>тегін көрсетіңіз.Мысал:
<ID>fcd68908-XXXX-82ae2a5a251d</ID> -
Тақырып арқылы орнатқанда оның мәнінде
idкілтін пайдаланыңыз.Мысал:
id="fcd68908-XXXX-82ae2a5a251d".
Жобаға қол жеткізуді беру үшін, сұрауда жоба идентификаторын (PID) көрсетіңіз.
-
XML-құрылым арқылы орнатқанда
Granteeблогының ішінде<EmailAddress>тегін көрсетіңіз.Мысал:
<EmailAddress>mcs2400549523</EmailAddress> -
Тақырып арқылы орнатқанда оның мәнінде
emailAddressкілтін пайдаланыңыз.Мысал:
emailAddress="mcs2400549523".
VK Object Storage сервисінде алдын ала анықталған метатоптар жиынтығы бар. Пайдаланушылар тобына қол жеткізуді беру үшін, сұрауда топтың URI мәнін көрсетіңіз.
-
Authenticated Users(авторизацияланған пайдаланушылар). VK Cloud жүйесіндегі барлық бар есептік жазбаларды қамтиды.Authenticated Usersтобына қол жеткізуді беру үшін:-
XML-құрылым арқылы орнатқанда
Granteeблогының ішінде<URI>тегін көрсетіңіз.Мысал:
<URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI> -
Тақырып арқылы орнатқанда оның мәнінде
uriкілтін пайдаланыңыз.Мысал:
uri="http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
-
-
All Users(барлық пайдаланушылар).All Usersтобына қол жеткізуді беру үшін:-
XML-құрылым арқылы орнатқанда
Granteeблогының ішінде<URI>тегін көрсетіңіз.Мысал:
<URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> -
Тақырып арқылы орнатқанда оның мәнінде
uriкілтін пайдаланыңыз.Мысал:
uri="http://acs.amazonaws.com/groups/global/AllUsers"
Қол жеткізу берілген анонимді авторизацияланбаған пайдаланушылар VK Cloud жүйесінде есептік жазбасы болмағандықтан,
65a011a29cdf8ec533ec3d1ccaae921cпайдаланушысының канондық ID-і атынан әрекеттер орындайды. -
Кестеде VK Object Storage ACL ішінде қолдайтын рұқсат түрлері келтірілген. Әрбір рұқсат үшін оның қандай құқықтар беретіндігі және бакетте және объектіде берілген кезде қандай операцияларды орындауға рұқсат ететіні көрсетілген.
ACL рұқсаты | Бакет үшін берілген | Объект үшін берілген |
|---|---|---|
| Бакеттегі объектілер тізімін алу HeadBucket, ListMultiparts, ListObjects, ListParts | Объект мазмұнын және оның метадеректерін оқу GetObject, HeadObject |
| Бакеттегі кез келген объектіні жасау, қайта жазу және жою AbortMultipartUpload, CompleteMultipartUpload, InitiateMultipartUpload, UploadPart, PutObject, DeleteObject | Қолданылмайды |
| Бакеттің ACL-ін оқу GetBucketAcl | Объектінің ACL-ін оқу GetObjectAcl |
| Бакет үшін ACL орнату PutBucketAcl | Объект үшін ACL орнату PutObjectAcl |
| Бакетке арналған рұқсаттар шеңберіндегі барлық құқықтар: | Объектіге арналған рұқсаттар шеңберіндегі барлық құқықтар: |
Бакет үшін ACL-ді алу. Алу үшін бакетте READ_ACP құқығы болуы қажет.
Егер READ_ACP құқығы анонимді пайдаланушыға берілсе, авторизация тақырыбын пайдаланбай-ақ бакеттің ACL-ін алуға болады.
Сұрау мысалы:
GET /?acl HTTP/1.1Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855x-amz-date: 20200831T174434ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=71dfa4666fb740d40d05307a29321c65cc620cdb17e8a9cb83d4f0e1b1b9d236
Жауап мысалы:
HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 17:44:35 GMTx-amz-request-id: tx000000000000002764fa6-005963bd03-1268c-ru-mskaContent-Type: application/xmlContent-Length: 848Connection: close<?xml version="1.0" encoding="UTF-8"?><AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID><DisplayName>VK Cloud_UserName</DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"><URI>http://acs.amazonaws.com/groups/global/AllUsers</URI></Grantee><Permission>READ</Permission></Grant><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID><DisplayName>VK Cloud_Username</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>
Бакет үшін ACL-ді орнату. ACL-ді орнату үшін бакетте WRITE_ACP құқығы болуы қажет.
ACL конфигурациясын сұрау денесінде беру арқылы жасалатын сұрау:
PUT /?acl HTTP/1.1Content-Type: application/xmlContent-Length: 675Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256: 724483e3830b19d6960345c484fb7904b26e8f2fb34a6c002fa779353b68c8d8x-amz-date: 20200831T183709ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date,Signature=1cf3f7771a4086375e5b6597026db6d55d84fbc86e3c3a86ec420ea9123e3163<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID></Grantee><Permission>FULL_CONTROL</Permission></Grant><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"><URI>http://acs.amazonaws.com/groups/global/AllUsers</URI></Grantee><Permission>READ</Permission></Grant></AccessControlList></AccessControlPolicy>
Жауап мысалы:
HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 18:37:10 GMTx-amz-request-id: tx00000000000000278ac49-005963c956-1268c-ru-mskaContent-Type: application/xmlContent-Length: 0Connection: close
Объект үшін ACL-ді алу. Алу үшін объектіде READ_ACP құқығы болуы қажет.
Сұрау мысалы:
GET /sammy.png?acl HTTP/1.1Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855x-amz-date: 20200831T191224ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=950e133849cd19d626291fd2937d927957cf3e97a36707d30d51a9b61ac08a8e
Жауап мысалы:
HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 19:12:24 GMTx-amz-request-id: tx0000000000000027a42dc-005963d198-1268c-ru-mskaContent-Type: application/xmlContent-Length: 848Connection: close<?xml version="1.0" encoding="UTF-8"?><AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID><DisplayName>VK Cloud_UserName</DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"><URI>http://acs.amazonaws.com/groups/global/AllUsers</URI></Grantee><Permission>READ</Permission></Grant><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID><DisplayName>VK Cloud_UserName</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>
Объект үшін ACL-ді орнату. ACL-ді орнату үшін объектіде WRITE_ACP құқығы болуы қажет.
ACL конфигурациясын сұрау денесінде беру арқылы жасалатын сұрау:
PUT /sammy.png?acl HTTP/1.1Сontent-Type: application/xmlContent-Length: 443Host: my-test-bucket1.hb.ru-msk.vkcloud-storage.rux-amz-content-sha256:c0bd9ba784be78d4f38bbc1e3b0da2de2e7a8f4ee259b3b840369cf00a78dad2x-amz-date:20200831T192142ZAuthorization: AWS4-HMAC-SHA256 Credential=II5JDQBAN3JYM4DNEB6C/20200831/ru-msk/s3/aws4_request,SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date,Signature=dfeeb2386f76b29097adadb35ac15f7d5f244f18cc95f082b0ac6d14ced48b10<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>eab55955-ebdb-4f18-a94d-f3558ff150da</ID></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>
Жауап мысалы:
HTTP/1.1 200 OKDate: Mon, 31 Aug 2020 19:21:42 GMTx-amz-request-id: tx0000000000000027aafc9-005963d3c6-1268c-ru-mskaContent-Type: application/xmlContent-Length: 0Connection: close
Қол жеткізу құқықтарын тағайындау саясаты мынадай: бар бакеттің немесе объектінің ACL-ін жаңартқанда кейбір жағдайларда бұрын тағайындалған қол жеткізу құқықтары жоғалуы мүмкін. Мысалы, кез келген метатопқа қол жеткізуді беру туралы сұрау кезінде VK Cloud-тың жекелеген жобалары үшін орнатылған барлық қол жеткізу құқықтары жоғалады. Бұған жол бермеу үшін, барлық қажет алушылар санаттарына қол жеткізу құқықтарын бір уақытта орнату ұсынылады.
Бір сұрауда рұқсаттарды бір уақытта орнатуға арналған XML-құрылымның мысалы:
<?xml version="1.0" encoding="UTF-8"?><AccessControlPolicy xmlns="http://bucket_name.hb.ru-msk.vkcloud-storage.ru/images/01.jpg/"><Owner><ID>Owner-canonical-user-ID</ID><DisplayName>owner-display-name</DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>Owner-canonical-user-ID</ID><DisplayName>owner-display-name</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>user1-canonical-user-ID</ID><DisplayName>user1-display-name</DisplayName></Grantee><Permission>WRITE</Permission></Grant><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"><URI>http://acs.amazonaws.com/groups/global/AllUsers</URI></Grantee><Permission>READ</Permission></Grant><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"><EmailAddress>project-ID</EmailAddress></Grantee><Permission>READ</Permission></Grant></AccessControlList></AccessControlPolicy>