<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; font-family: Calibri, sans-serif; font-size: 14px; color: rgb(0, 0, 0);">
<div>Hi there,</div>
<div><br>
</div>
<div>I can't seem to be able to get ACLs set properly on newly created buckets in riak-cs. I am using s3curl to push the payload up  via PUT /?acl and it returns 200 OK. However, a GET /?acl returns an xml payload with missing IDs. Without manually pushing
 new ACLs, the default ACLs correctly gives access to the owner, but as soon as I push a custom ACL set, it screws up the grants for both the owner and the other users.</div>
<div><br>
</div>
<div>NOTE: The keys below are for a private test environment so substitute your values accordingly.</div>
<div><br>
</div>
<div>Any help appreciated on pointing me to the right direction!</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Shawn</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Here are the three user IDs, keys and secrets. I want the owner to retain full control while I want to grant WRITE privileges to publisher and READ privileges to reader.</div>
<div><br>
</div>
<div><br>
</div>
<div>    admin_id: feab26c2fec623a34e7d60e620b42a7786eca3223b5e2faebc5d248a34f3239e</div>
<div>    admin_key: 1049V_JJHPH7TO_QPWVC</div>
<div>    admin_secret: lMQsnn3Cukk1UR28FAtoZiap9KEOjBRgYKiVVg==</div>
<div>    publisher_id: 5efc8fb59754a6d11eb1a36c501a8ef7b1be44b0300fbe3df354423b7a115ac5</div>
<div>    publisher_key: D-YBO-QHCHU9MEHNZR1D</div>
<div>    publisher_secret: nin5LA4WHEuJeTuzN-qCWBXsOvTyUbdPuDQ3eg==</div>
<div>    reader_id: de6831d6da88df325d474f7f6c1f708596998c54fc0817685f8c67f1d8cab239</div>
<div>    reader_key: _QOKYEHYM6S-YDDHGSYF</div>
<div>    reader_secret: sFc1HBhjQzfr70Yda-ke257LHkVCPNAN0chs9A==</div>
<div><br>
</div>
<div><!-- </div>
<div>  INPUT ACL XML</div>
<div>--></div>
<div><AccessControlPolicy xmlns="http://data.basho.com/doc/2012-04-05/"></div>
<div>  <Owner></div>
<div>    <ID>feab26c2fec623a34e7d60e620b42a7786eca3223b5e2faebc5d248a34f3239e</ID></div>
<div>  </Owner></div>
<div>  <AccessControlList></div>
<div>    <Grant></div>
<div>      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"></div>
<div>        <ID>feab26c2fec623a34e7d60e620b42a7786eca3223b5e2faebc5d248a34f3239e</ID></div>
<div>     </Grantee></div>
<div>     <Permission>FULL_CONTROL</Permission></div>
<div>    </Grant></div>
<div>    <Grant></div>
<div>      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"></div>
<div>        <ID>5efc8fb59754a6d11eb1a36c501a8ef7b1be44b0300fbe3df354423b7a115ac5</ID></div>
<div>     </Grantee></div>
<div>     <Permission>WRITE</Permission></div>
<div>    </Grant></div>
<div>    <Grant></div>
<div>      <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"></div>
<div>        <ID>de6831d6da88df325d474f7f6c1f708596998c54fc0817685f8c67f1d8cab239</ID></div>
<div>     </Grantee></div>
<div>     <Permission>READ</Permission></div>
<div>    </Grant></div>
<div>  </AccessControlList></div>
<div></AccessControlPolicy></div>
<div><br>
</div>
<div><!--</div>
<div>  CREATE BUCKET social-media VIA s3curl</div>
<div>  </div>
<div>  NOTE</div>
<div>  NOTE If you are using non-standard domains, in the case below, edit the s3curl.pl file and modify the @endpoints to contain the correct set of domains</div>
<div>  NOTE</div>
<div>--></div>
<div>$ bin/s3curl.pl --debug --id ${RIAK_ADMIN_KEY} --key ${RIAK_ADMIN_SECRET} --acl private -- -s -v -x localhost:50201 -X PUT http://social-media.cs.domain.com/</div>
<div><br>
</div>
<div>s3curl: Found the url: host=social-media.cs.domain.com; port=; uri=/; query=;</div>
<div>s3curl: vanity endpoint signing case</div>
<div>s3curl: StringToSign='PUT\n\n\nMon, 23 Feb 2015 20:03:15 +0000\nx-amz-acl:private\n/social-media/'</div>
<div>s3curl: signature='v48ovqQBnqfEcBZ7kPedpbs1Xt4='</div>
<div>s3curl: exec curl -H Date: Mon, 23 Feb 2015 20:03:15 +0000 -H Authorization: AWS 1049V_JJHPH7TO_QPWVC:v48ovqQBnqfEcBZ7kPedpbs1Xt4= -H x-amz-acl: private -L -s -v -x localhost:50201 -X PUT http://social-media.cs.domain.com/</div>
<div>* Hostname was NOT found in DNS cache</div>
<div>*   Trying 127.0.0.1...</div>
<div>* Connected to localhost (127.0.0.1) port 50201 (#0)</div>
<div>> PUT http://social-media.cs.domain.com/ HTTP/1.1</div>
<div>> User-Agent: curl/7.37.1</div>
<div>> Host: social-media.cs.domain.com</div>
<div>> Accept: */*</div>
<div>> Proxy-Connection: Keep-Alive</div>
<div>> Date: Mon, 23 Feb 2015 20:03:15 +0000</div>
<div>> Authorization: AWS 1049V_JJHPH7TO_QPWVC:v48ovqQBnqfEcBZ7kPedpbs1Xt4=</div>
<div>> x-amz-acl: private</div>
<div>> </div>
<div>< HTTP/1.1 200 OK</div>
<div>* Server Riak CS is not blacklisted</div>
<div>< Server: Riak CS</div>
<div>< Date: Mon, 23 Feb 2015 20:03:16 GMT</div>
<div>< Content-Type: application/xml</div>
<div>< Content-Length: 0</div>
<div>< </div>
<div>* Connection #0 to host localhost left intact</div>
<div><br>
</div>
<div><br>
</div>
<div><!--</div>
<div>  SET ACLs ON BUCKET social-media VIA s3curl</div>
<div>  </div>
<div>  NOTE</div>
<div>  NOTE If you are using non-standard domains, in the case below, edit the s3curl.pl file and modify the @endpoints to contain the correct set of domains</div>
<div>  NOTE</div>
<div>--></div>
<div>$  bin/s3curl.pl --debug --id ${RIAK_ADMIN_KEY} --key ${RIAK_ADMIN_SECRET} --put /tmp/riak-cs-bucket-policy.xml -- -s -v -x localhost:50201 -X PUT http://social-media.cs.domain.com/?acl</div>
<div><br>
</div>
<div>s3curl: Found the url: host=social-media.cs.domain.com; port=; uri=/; query=acl;</div>
<div>s3curl: vanity endpoint signing case</div>
<div>s3curl: StringToSign='PUT\n\n\nMon, 23 Feb 2015 20:03:21 +0000\n/social-media/?acl'</div>
<div>s3curl: signature='QAcPGgB1tZO2+U4M0TvP4Q4uyxQ='</div>
<div>s3curl: exec curl -H Date: Mon, 23 Feb 2015 20:03:21 +0000 -H Authorization: AWS 1049V_JJHPH7TO_QPWVC:QAcPGgB1tZO2+U4M0TvP4Q4uyxQ= -L -T /tmp/riak-cs-bucket-policy.xml -s -v -x localhost:50201 -X PUT http://social-media.cs.domain.com/?acl</div>
<div>* Hostname was NOT found in DNS cache</div>
<div>*   Trying 127.0.0.1...</div>
<div>* Connected to localhost (127.0.0.1) port 50201 (#0)</div>
<div>> PUT http://social-media.cs.domain.com/?acl HTTP/1.1</div>
<div>> User-Agent: curl/7.37.1</div>
<div>> Host: social-media.cs.domain.com</div>
<div>> Accept: */*</div>
<div>> Proxy-Connection: Keep-Alive</div>
<div>> Date: Mon, 23 Feb 2015 20:03:21 +0000</div>
<div>> Authorization: AWS 1049V_JJHPH7TO_QPWVC:QAcPGgB1tZO2+U4M0TvP4Q4uyxQ=</div>
<div>> Content-Length: 1003</div>
<div>> Expect: 100-continue</div>
<div>> </div>
<div>< HTTP/1.1 100 Continue</div>
<div>* We are completely uploaded and fine</div>
<div>< HTTP/1.1 200 OK</div>
<div>* Server Riak CS is not blacklisted</div>
<div>< Server: Riak CS</div>
<div>< Date: Mon, 23 Feb 2015 20:03:21 GMT</div>
<div>< Content-Type: application/xml</div>
<div>< Content-Length: 0</div>
<div>< </div>
<div>* Connection #0 to host localhost left intact</div>
<div><br>
</div>
<div><br>
</div>
<div><!--</div>
<div>  VERIFY ACLs USING ADMIN KEY/SECRET</div>
<div><br>
</div>
<div>  As you can see, IDs in the grants are missing, and even the owner now cannot put/get files.</div>
<div>--></div>
<div>bin/s3curl.pl --debug --id ${RIAK_ADMIN_KEY} --key ${RIAK_ADMIN_SECRET}  -- -s -v -x localhost:50201 -X GET http://social-media.cs.domain.com/?acl</div>
<div><br>
</div>
<div><?xml version="1.0" encoding="UTF-8"?></div>
<div><AccessControlPolicy></div>
<div>    <Owner></div>
<div>        <ID>feab26c2fec623a34e7d60e620b42a7786eca3223b5e2faebc5d248a34f3239e</ID></div>
<div>        <DisplayName>riak-cs-admin</DisplayName></div>
<div>    </Owner></div>
<div>    <AccessControlList></div>
<div>        <Grant></div>
<div>            <Grantee</div>
<div>                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"></div>
<div>                <ID></ID></div>
<div>                <DisplayName></DisplayName></div>
<div>            </Grantee></div>
<div>            <Permission>FULL_CONTROL</Permission></div>
<div>        </Grant></div>
<div>        <Grant></div>
<div>            <Grantee</div>
<div>                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"></div>
<div>                <ID></ID></div>
<div>                <DisplayName></DisplayName></div>
<div>            </Grantee></div>
<div>            <Permission>READ</Permission></div>
<div>        </Grant></div>
<div>        <Grant></div>
<div>            <Grantee</div>
<div>                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"></div>
<div>                <ID></ID></div>
<div>                <DisplayName></DisplayName></div>
<div>            </Grantee></div>
<div>            <Permission>WRITE</Permission></div>
<div>        </Grant></div>
<div>    </AccessControlList></div>
<div></AccessControlPolicy></div>
<div><br>
</div>
<div><!-- </div>
<div>  DUMP USERS TO VERIFY</div>
<div>--></div>
<div>s3curl: Found the url: host=riak-cs.cs.domain.com; port=; uri=/users; query=;</div>
<div>s3curl: vanity endpoint signing case</div>
<div>s3curl: StringToSign='GET\n\n\nMon, 23 Feb 2015 20:30:30 +0000\n/riak-cs/users'</div>
<div>s3curl: signature='mOcYNLzS/3PFkXhU8tnM14HQVoI='</div>
<div>s3curl: exec curl -H Date: Mon, 23 Feb 2015 20:30:30 +0000 -H Authorization: AWS 1049V_JJHPH7TO_QPWVC:mOcYNLzS/3PFkXhU8tnM14HQVoI= -L -s -v -x localhost:50201 -X GET http://riak-cs.cs.domain.com/users</div>
<div>* Hostname was NOT found in DNS cache</div>
<div>*   Trying 127.0.0.1...</div>
<div>* Connected to localhost (127.0.0.1) port 50201 (#0)</div>
<div>> GET http://riak-cs.cs.domain.com/users HTTP/1.1</div>
<div>> User-Agent: curl/7.37.1</div>
<div>> Host: riak-cs.cs.domain.com</div>
<div>> Accept: */*</div>
<div>> Proxy-Connection: Keep-Alive</div>
<div>> Date: Mon, 23 Feb 2015 20:30:30 +0000</div>
<div>> Authorization: AWS 1049V_JJHPH7TO_QPWVC:mOcYNLzS/3PFkXhU8tnM14HQVoI=</div>
<div>> </div>
<div>< HTTP/1.1 200 OK</div>
<div>< Vary: Accept</div>
<div>< Transfer-Encoding: chunked</div>
<div>* Server Riak CS is not blacklisted</div>
<div>< Server: Riak CS</div>
<div>< Date: Mon, 23 Feb 2015 20:30:30 GMT</div>
<div>< Content-Type: multipart/mixed; boundary=TCW5KE8FRZPTJ9HK2PL896Q8A5V2F9O</div>
<div>< </div>
<div>--TCW5KE8FRZPTJ9HK2PL896Q8A5V2F9O</div>
<div>Content-Type: application/xml</div>
<div><br>
</div>
<div><br>
</div>
<div><?xml version="1.0" encoding="UTF-8"?></div>
<div><Users></div>
<div>    <User></div>
<div>        <Email>riak-cs-publisher@domain.com</Email></div>
<div>        <DisplayName>riak-cs-publisher</DisplayName></div>
<div>        <Name>publisher</Name></div>
<div>        <KeyId>D-YBO-QHCHU9MEHNZR1D</KeyId></div>
<div>        <KeySecret>nin5LA4WHEuJeTuzN-qCWBXsOvTyUbdPuDQ3eg==</KeySecret></div>
<div>        <Id>5efc8fb59754a6d11eb1a36c501a8ef7b1be44b0300fbe3df354423b7a115ac5</Id></div>
<div>        <Status>enabled</Status></div>
<div>    </User></div>
<div>    <User></div>
<div>        <Email>riak-cs-reader@domain.com</Email></div>
<div>        <DisplayName>riak-cs-reader</DisplayName></div>
<div>        <Name>reader</Name></div>
<div>        <KeyId>_QOKYEHYM6S-YDDHGSYF</KeyId></div>
<div>        <KeySecret>sFc1HBhjQzfr70Yda-ke257LHkVCPNAN0chs9A==</KeySecret></div>
<div>        <Id>de6831d6da88df325d474f7f6c1f708596998c54fc0817685f8c67f1d8cab239</Id></div>
<div>        <Status>enabled</Status></div>
<div>    </User></div>
<div></Users></div>
<div>--TCW5KE8FRZPTJ9HK2PL896Q8A5V2F9O</div>
<div>Content-Type: application/xml</div>
<div><br>
</div>
<div><br>
</div>
<div><?xml version="1.0" encoding="UTF-8"?></div>
<div><Users></div>
<div>    <User></div>
<div>        <Email>riak-cs-admin@domain.com</Email></div>
<div>        <DisplayName>riak-cs-admin</DisplayName></div>
<div>        <Name>admin</Name></div>
<div>        <KeyId>1049V_JJHPH7TO_QPWVC</KeyId></div>
<div>        <KeySecret>lMQsnn3Cukk1UR28FAtoZiap9KEOjBRgYKiVVg==</KeySecret></div>
<div>        <Id>feab26c2fec623a34e7d60e620b42a7786eca3223b5e2faebc5d248a34f3239e</Id></div>
<div>        <Status>enabled</Status></div>
<div>    </User></div>
<div></Users></div>
<div>--TCW5KE8FRZPTJ9HK2PL896Q8A5V2F9O</div>
<div>Content-Type: application/xml</div>
<div><br>
</div>
<div><br>
</div>
<div><?xml version="1.0" encoding="UTF-8"?></div>
<div><Users/></div>
<div>* Connection #0 to host localhost left intact</div>
<div>--TCW5KE8FRZPTJ9HK2PL896Q8A5V2F9O--</div>
<div><br>
</div>
</body>
</html>