Установить ACL контейнера в Openstack Swift не работает
Поэтому я попытался установить ACL для контейнера в Openstack Swift с использованием Openstack4J, позволив пользователю с именем testeight в проекте администратора читать и писать в контейнере, перечислив его код проекта: идентификатор пользователя в коде. Я предполагал, что другой пользователь в проекте не сможет загрузить или загрузить файл, но когда я попытался войти в систему с учетной записью другого пользователя, все еще возможно загрузить файл. Также, когда я пытался использовать openrc и войти в систему как разрешенный пользователь, он не позволяет загрузить файл.
Вот мой код до сих пор
package openstack;
import java.util.Map;
import org.openstack4j.api.OSClient.OSClientV2;
import org.openstack4j.api.OSClient.OSClientV3;
import org.openstack4j.model.common.Identifier;
import org.openstack4j.model.storage.object.SwiftAccount;
import org.openstack4j.model.storage.object.options.CreateUpdateContainerOptions;
import org.openstack4j.openstack.OSFactory;
public class OpenstackKeystone {
public static void main(String[] args) {
// TODO Auto-generated method stub
OSClientV2 os = initKeystone2();
SwiftAccount acc = os.objectStorage().account().get();
// os.objectStorage().containers().create("testContainer3");
os.objectStorage().containers().update("testContainer3", CreateUpdateContainerOptions.create().accessRead("59707fae738347f6aba75d2e30a6b5fb:21d80478bac540faa58441c01baf9fad"));
os.objectStorage().containers().update("testContainer3", CreateUpdateContainerOptions.create().accessWrite("59707fae738347f6aba75d2e30a6b5fb:21d80478bac540faa58441c01baf9fad"));
Map<String, String> a = os.objectStorage().containers().getMetadata("testContainer3");
for(Map.Entry<String, String> s : a.entrySet()) {
System.out.println(s.getKey() +" : "+s.getValue());
}
}
public static OSClientV3 initKeystone() {
OSClientV3 os = OSFactory.builderV3().endpoint("http://192.168.89.162:5000/v3").credentials("admin", "secret", Identifier.byId("default")).scopeToProject(Identifier.byId("b63fe9db4e9741099c88e115b333f9c1"))
.authenticate();
return os;
}
public static OSClientV2 initKeystone2() {
OSClientV2 os = OSFactory.builderV2().endpoint("http://192.168.89.122:5000/v2.0").credentials("testfive", "123").tenantName("testuser").authenticate();
return os;
}
}