@@ -481,36 +481,74 @@ to be applied through the API call described above.
481
481
482
482
483
483
In addition to those shown in the example script above, the following
484
- configuration items can be configured (the default values are for
485
- openldap)
484
+ configuration items can be configured on a Global or on a per Domain level (the default values are for
485
+ OpenLDAP)
486
486
487
- - ``ldap.basedn ``: Sets the basedn for LDAP. Ex: **OU=APAC,DC=company,DC=com **
488
-
489
- - ``ldap.bind.principal ``, ``ldap.bind.password ``: DN and password for a User
490
- who can list all the Users in the above basedn. Ex:
491
- **CN=Administrator, OU=APAC, DC=company, DC=com **
487
+ .. list-table :: LDAP Settings
488
+ :header-rows: 1
492
489
493
- - ``ldap.user.object ``: object type of Users within LDAP. Defaults value is
494
- **user ** for AD and **interorgperson ** for openldap.
490
+ * - Setting
491
+ - OpenLDAP
492
+ - Active Directory
493
+ - Description
494
+ * - ``ldap.basedn ``
495
+ - `Ex: OU=APAC, DC=company, DC=com `
496
+ - `Ex: DC=company, DC=com `
497
+ - Sets the basedn for LDAP.
498
+ * - ``ldap.search.group.principle ``
499
+ - `Ex: CN=ACSGroup, DC=company, DC=com `
500
+ - `Ex: CN=ACSGroup, CN=Users, DC=company, DC=com `
501
+ - (optional) if set only Users from this group are listed.
502
+ * - ``ldap.bind.principal ``
503
+ - `Ex: CN=ACSServiceAccount, OU=APAC, DC=company, DC=com `
504
+ - `Ex: CN=ACSServiceAccount, CN=Users, DC=company, DC=com `
505
+ - Service account that can list all the Users in the above basedn. Avoid using privileged account such as Administrator.
506
+ * - ``ldap.bind.password ``
507
+ - `****************** `
508
+ - `****************** `
509
+ - Password for a DN User. Is entered in plain text but gets stored encrypted.
510
+ * - ``ldap.user.object ``
511
+ - `interorgperson `
512
+ - `user `
513
+ - Object type of Users within LDAP.
514
+ * - ``ldap.email.attribute ``
515
+ - `mail `
516
+ - `mail `
517
+ - Email attribute within ldap for a User.
518
+ * - ``ldap.firstname.attribute ``
519
+ - `givenname `
520
+ - `givenname `
521
+ - firstname attribute within ldap for a User.
522
+ * - ``ldap.lastname.attribute ``
523
+ - `sn `
524
+ - `sn `
525
+ - lastname attribute within ldap for a User.
526
+ * - ``ldap.group.object ``
527
+ - `groupOfUniqueNames `
528
+ - `groupOfUniqueNames `
529
+ - Object type of groups within LDAP.
530
+ * - ``ldap.group.user.uniquemember ``
531
+ - `uniquemember `
532
+ - `uniquemember `
533
+ - Attribute for uniquemembers within a group.
534
+
535
+
536
+ Once configured, on Add Account page, you will see an "Add LDAP Account" button which opens a dialog and the selected Users can be imported.
495
537
496
- - `` ldap.email.attribute ``: email attribute within ldap for a User. Default
497
- value for AD and openldap is ** mail **.
538
+ .. figure :: /_static/images/CloudStack- ldap-screen1.png
539
+ :align: center
498
540
499
- - ``ldap.firstname.attribute ``: firstname attribute within ldap for a User.
500
- Default value for AD and openldap is **givenname **.
501
541
502
- - ``ldap.lastname.attribute ``: lastname attribute within ldap for a User.
503
- Default value for AD and openldap is **sn **.
542
+ You could also use api commands:
543
+ ``listLdapUsers ``, to list Users in LDAP that could or would be imported in CloudStack
544
+ ``ldapCreateAccount ``, to manually create a User in a specific Account
545
+ ``importLdapUsers ``, to batch import Users from LDAP
504
546
505
- - `` ldap.username.attribute ``: username attribute for a User within LDAP.
506
- Default value is ** SAMAccountName ** for AD and ** uid ** for openldap .
547
+ Once LDAP is enabled, the Users will not be allowed to changed password
548
+ directly in CloudStack .
507
549
508
550
509
- Restricting LDAP Users to a group:
510
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
511
551
512
- - ``ldap.search.group.principle ``: this is optional and if set only Users from
513
- this group are listed.
514
552
515
553
516
554
LDAP SSL:
@@ -524,30 +562,6 @@ You will need to know the path to the keystore and the password.
524
562
- ``ldap.truststore.password `` : truststore password
525
563
526
564
527
- LDAP groups:
528
- ~~~~~~~~~~~~
529
-
530
- - ``ldap.group.object ``: object type of groups within LDAP. Default value is
531
- group for AD and **groupOfUniqueNames ** for openldap.
532
-
533
- - ``ldap.group.user.uniquemember ``: attribute for uniquemembers within a group.
534
- Default value is **member ** for AD and **uniquemember ** for openldap.
535
-
536
- Once configured, on Add Account page, you will see an "Add LDAP Account" button
537
- which opens a dialog and the selected Users can be imported.
538
-
539
- .. figure :: /_static/images/CloudStack-ldap-screen1.png
540
- :align: center
541
-
542
-
543
- You could also use api commands:
544
- ``listLdapUsers ``, to list Users in LDAP that could or would be imported in CloudStack
545
- ``ldapCreateAccount ``, to manually create a User in a specific Account
546
- ``importLdapUsers ``, to batch import Users from LDAP
547
-
548
- Once LDAP is enabled, the Users will not be allowed to changed password
549
- directly in CloudStack.
550
-
551
565
.. |button to dedicate a zone, pod,cluster, or host | image :: /_static/images/dedicate-resource-button.png
552
566
553
567
Using a SAML 2.0 Identity Provider for User Authentication
@@ -676,7 +690,7 @@ For GitHub, please follow the instructions mentioned here `"Setting up OAuth 2.0
676
690
In any OAuth 2.0 configuration admin has to use the redirect URI "http://<management server IP>:<port>/#/verifyOauth"
677
691
678
692
.. Note :: [Google OAuth 2.0 redirect URI] :
679
- Google OAuth 2.0 configuration wont accept '#' in the URI, please use "http://<management server Domain>:<port>/?verifyOauth"
693
+ Google OAuth 2.0 configuration won't accept '#' in the URI, please use "http://<management server Domain>:<port>/?verifyOauth"
680
694
Google does not accept direct IP address in the redirect URI, it must be a domain. As a workaround one can add the management
681
695
server IP to host table in the local system and assign a domain, something like "management.cloud". In that redirect URI looks like
682
696
"http://management.cloud:8080/?verifyOauth"
@@ -884,3 +898,76 @@ password for a user:
884
898
885
899
.. figure :: /_static/images/reset-password.png
886
900
:align: center
901
+
902
+ Using API Key and Secret Key based Authentication
903
+ -------------------------------------------------
904
+ Users can generate API key and Secret key to directly access CloudStack APIs.
905
+ This authenctication method is used for programatically calling CloudStack APIs and thus helps in automation.
906
+ The API key uniquely identifies the Account, while the Secret key is used to generate a secure singnature.
907
+ When making an API call, the API key and signature are included along with the command and other parameters,
908
+ and sent to the CloudStack API endpoint. For detailed information, refer to the CloudStack's Programmer Guide.
909
+
910
+ Disabling Api Key and Secret Key based Access
911
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
912
+ Root Administrators may choose to Disable Api key based access for certain Users, Accounts or Domains.
913
+ Or the Administrator may choose to Disable Api Key based access globally and allow only for certain users.
914
+ This could be particularly useful in cases where external authorization mechanisms like LDAP, SAML or OAuth2 are used,
915
+ as then Api key based authorization is the only means for automation.
916
+ This gives control to the Admin over who is allowed to run automation.
917
+
918
+ Api key based access is enabled by default but it can be disabled (or enabled) at different granularities:
919
+
920
+ 1. Users
921
+
922
+ Setting for a User can be changed through the Api Key Access field in the Edit User form, visible only to the Root Administrator.
923
+ Three values are possible: Disable, Enable and Inherit. Inherit means that the User will inherit whatever value is set for the Account.
924
+
925
+ .. figure :: /_static/images/edit-user-api-key-access.png
926
+ :align: center
927
+
928
+ Admins can also search for Users having the required Api key access value using the User list view search filter.
929
+
930
+ .. figure :: /_static/images/filter-user-api-key-access.png
931
+ :align: center
932
+
933
+ 2. Accounts
934
+
935
+ Similar to Users, Api Key Access field is present in the Edit Account Form and the Account list view search filter, only for the Root Administrator.
936
+ If the value is set to Inherit, it means that Account will inherit whatever value is set for the Domain.
937
+
938
+ 3. Domains
939
+
940
+ Api Key Access at Domain level is controlled by the Domain level setting "api.key.access". If the Domain level
941
+ configuration is not set, then similar to other configurations it will consult the global value.
942
+
943
+ 4. Global
944
+
945
+ The global value of the configuration setting "api.key.access" is set to 'True' by default. So Api Key Access at
946
+ all levels is enabled by default. If the global value is changed to 'False' without setting any of the lower levels,
947
+ then Api Key Access will be disabled for all Users.
948
+
949
+ Order of Precedence
950
+ ^^^^^^^^^^^^^^^^^^^
951
+ The local value always takes precedence over the global value. So if Api key access is disabled for a User but
952
+ enabled for an Account, the User authorisation will still fail. Only if the User's Api key access is set to
953
+ 'Inherit', the Account's Api Key Access value is considered.
954
+ Similarly if Account's Api Key Access is set to 'Inherit', only then the Domain level setting is considered,
955
+ And only if the Domain level configuration is not set, the Global configuration is considered.
956
+
957
+ Examples
958
+ ^^^^^^^^
959
+
960
+ #. Disallow Api key access for all Accounts and Users in a Domain.
961
+
962
+ #. Leave all User and Account level Api Key Access values to the default 'Inherit'.
963
+ #. Set the Domain level setting "api.key.access" to False only for the required domain.
964
+
965
+ #. Disallow Api key access for some Users, but allowed globally.
966
+
967
+ #. Set the User level permission to ‘Disabled’ only for the required Users.
968
+ #. All upper level permissions should either be Inherit or Enabled.
969
+
970
+ #. Allow Api key access to some Users, but disallowed globally.
971
+
972
+ #. Set User level permission to ‘Enabled’ only for the required Users.
973
+ #. All upper level permissions should either be Inherit or Disabled.
0 commit comments