Kebijakan

Setiap layanan OpenStack mendefinisikan kebijakan akses untuk sumber dayanya dalam file kebijakan terkait. Sumber daya, misalnya, bisa berupa akses API, kemampuan untuk mengkaitkan volume, atau untuk mengaktifkan instance. Aturan kebijakan ditentukan dalam format JSON dan file tersebut disebut policy.json. Sintaks dan format file ini dibahas di Configuration Reference.

Kebijakan ini dapat dimodifikasi atau diperbarui oleh administrator awan untuk mengontrol akses ke berbagai sumber. Pastikan bahwa setiap perubahan pada kebijakan kontrol akses tidak secara tidak sengaja melemahkan keamanan sumber daya apapun. Perhatikan juga bahwa perubahan pada file policy.json menjadi efektif dan tidak memerlukan layanan untuk di-restart.

Contoh berikut menunjukkan bagaimana layanan dapat membatasi akses untuk membuat, memperbarui dan menghapus sumber daya hanya untuk pengguna yang memiliki peran cloud_admin, yang telah didefinisikan sebagai gabungan dari role = admin dan domain_id = admin_domain_id, sedangkan sumber daya get and list tersedia bagi pengguna yang memiliki peran cloud_admin atau admin.

{
    "admin_required": "role:admin",
    "cloud_admin": "rule:admin_required and domain_id:admin_domain_id",
    "service_role": "role:service",
    "service_or_admin": "rule:admin_required or rule:service_role",
    "owner" : "user_id:%(user_id)s or user_id:%(target.token.user_id)s",
    "admin_or_owner": "(rule:admin_required and domain_id:%(target.token.user.domain.id)s) or rule:owner",
    "admin_or_cloud_admin": "rule:admin_required or rule:cloud_admin",
    "admin_and_matching_domain_id": "rule:admin_required and domain_id:%(domain_id)s",
    "service_admin_or_owner": "rule:service_or_admin or rule:owner",

    "default": "rule:admin_required",

    "identity:get_service": "rule:admin_or_cloud_admin",
    "identity:list_services": "rule:admin_or_cloud_admin",
    "identity:create_service": "rule:cloud_admin",
    "identity:update_service": "rule:cloud_admin",
    "identity:delete_service": "rule:cloud_admin",

    "identity:get_endpoint": "rule:admin_or_cloud_admin",
    "identity:list_endpoints": "rule:admin_or_cloud_admin",
    "identity:create_endpoint": "rule:cloud_admin",
    "identity:update_endpoint": "rule:cloud_admin",
    "identity:delete_endpoint": "rule:cloud_admin",

}