Commit Graph

61 Commits

Author SHA1 Message Date
Rohit Yadav f30c52a16c CLOUDSTACK-8562: DB-Backed Dynamic Role Based API Access Checker
This feature allows root administrators to define new roles and associate API
permissions to them.

A limited form of role-based access control for the CloudStack management server
API is provided through a properties file, commands.properties, embedded in the
WAR distribution. Therefore, customizing API permissions requires unpacking the
distribution and modifying this file consistently on all servers. The old system
also does not permit the specification of additional roles.

FS:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+Role+Based+API+Access+Checker+for+CloudStack

DB-Backed Dynamic Role Based API Access Checker for CloudStack brings following
changes, features and use-cases:
- Moves the API access definitions from commands.properties to the mgmt server DB
- Allows defining custom roles (such as a read-only ROOT admin) beyond the
  current set of four (4) roles
- All roles will resolve to one of the four known roles types (Admin, Resource
  Admin, Domain Admin and User) which maintains this association by requiring
  all new defined roles to specify a role type.
- Allows changes to roles and API permissions per role at runtime including additions or
  removal of roles and/or modifications of permissions, without the need
  of restarting management server(s)

Upgrade/installation notes:
- The feature will be enabled by default for new installations, existing
  deployments will continue to use the older static role based api access checker
  with an option to enable this feature
- During fresh installation or upgrade, the upgrade paths will add four default
  roles based on the four default role types
- For ease of migration, at the time of upgrade commands.properties will be used
  to add existing set of permissions to the default roles. cloud.account
  will have a new role_id column which will be populated based on default roles
  as well

Dynamic-roles migration tool: scripts/util/migrate-dynamicroles.py
- Allows admins to migrate to the dynamic role based checker at a future date
- Performs a harder one-way migrate and update
- Migrates rules from existing commands.properties file into db and deprecates it
- Enables an internal hidden switch to enable dynamic role based checker feature

Deprecate commands.properties

- Fixes apidocs and marvin to be independent of commands.properties usage
- Removes bundling of commands.properties in deb/rpm packaging
- Removes file references across codebase

Reviewed-by: John Burwell <john.burwell@shapeblue.com>
QA-by: Boris Stoyanov <boris.stoyanov@shapeblue.com>

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2016-04-25 14:52:02 +05:30
Rohit Yadav d71c19f91c ApiXmlDocWriter: add more search name spaces to find APIs
Whenever a new API command is added to CloudStack, if developers are not using
the recommended namespace of org.apache.cloudstack.api.* they should add their
custom namespace/package here. ApiXmlDocWriter uses ReflectUtils to find APIs
within these packages (which must be also available in cloud-client).

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-08-25 18:16:28 +02:00
Rohit Yadav 31fbb20648 ApiXmlDocWriter: Don't hardcode around login api or skip it based on key name
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-08-13 14:05:18 +02:00
Rohit Yadav 7434f1bd33 ApiXmlDocWriter: get rid of hardcoded login/logout docs
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-08-12 12:01:31 +02:00
Rohit Yadav 2e5bbc9a0d ApiXmlDocWriter: remove hardcoded login and logout apis
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-08-12 12:01:31 +02:00
Santhosh Edukulla deeb754bfa Fixed Coverity Issues Reported 2014-07-25 16:42:14 +05:30
amoghvk c804660c74 CLOUDSTACK-7168: Revert "Fixed Coverity Issues reported" that broke CI
This reverts commit 4523490d44.
2014-07-23 11:37:36 -07:00
Santhosh Edukulla 4523490d44 Fixed Coverity Issues reported
Signed-off-by: Santhosh Edukulla <santhosh.edukulla@gmail.com>
2014-07-22 18:03:36 +05:30
Marcus Sorensen 20a31b43d6 CLOUDSTACK-6784: Expose data types via API so consumers of API can validate data 2014-05-27 15:23:23 -06:00
Min Chen faa379b6c2 CLOUDSTACK-6752: IAM command class separation caused ApiDoc warning of
duplicated cmd class for the same api name.
2014-05-22 18:28:25 -07:00
Alex Huang be5e5cc641 All Checkstyle problems corrected 2013-12-12 12:26:07 -08:00
wilderrodrigues 226b193488 Fix for Coverity issues CID_1116744, CID_1116718 and CID_1116682, all related to resource leak
Signed-off-by: Daan Hoogland <daan@onecht.net>
2013-11-27 14:20:29 +01:00
Alex Huang d620df2bdd Reformatted all of the code. 2013-11-21 06:15:26 -08:00
Alex Huang 8d62744681 Reformat all source code. Added checkstyle to check the source code 2013-11-20 07:26:53 -08:00
Alex Huang b8e79c30a8 Compile complete 2013-09-06 15:40:37 -07:00
Rohit Yadav a8623bacd7 ApiXmlDocWriter: Fix multiple field occurence in apidocs by using set
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-23 14:57:41 -08:00
Rohit Yadav 539d94b4a6 ApiXmlDocWriter: Reuse methods from ReflectUtil
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-08 18:54:29 -08:00
Rohit Yadav 6f6ed85839 ApiXmlDocWriter: Fix apidocs generation based on new commands.properties syntax
Makes it backward compatible to old syntax as well

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-06 15:01:09 -08:00
Rohit Yadav 7a7fe583e0 Rename Implementation annotation to APICommand
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2012-12-26 15:55:34 -08:00
Rohit Yadav 296b49c2f8 Merge branch 'master' into test-merge-api
Conflicts:
	api/src/com/cloud/agent/api/BackupSnapshotCommand.java
	api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
	api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
	api/src/com/cloud/network/NetworkService.java
	api/src/com/cloud/resource/ResourceService.java
	api/src/org/apache/cloudstack/api/ApiConstants.java
	api/src/org/apache/cloudstack/api/ResponseGenerator.java
	api/src/org/apache/cloudstack/api/response/SSHKeyPairResponse.java
	client/tomcatconf/commands.properties.in
	core/src/com/cloud/storage/SnapshotVO.java
	pom.xml
	server/src/com/cloud/api/ApiDispatcher.java
	server/src/com/cloud/api/ApiResponseHelper.java
	server/src/com/cloud/api/ApiServer.java
	server/src/com/cloud/configuration/ConfigurationManagerImpl.java
	server/src/com/cloud/network/NetworkManagerImpl.java
	server/src/com/cloud/network/rules/RulesManagerImpl.java
	server/src/com/cloud/offerings/NetworkOfferingVO.java
	server/src/com/cloud/resource/ResourceManagerImpl.java
	server/src/com/cloud/upgrade/dao/Upgrade40to41.java
	server/src/com/cloud/vm/UserVmManagerImpl.java
	server/test/com/cloud/vpc/MockNetworkManagerImpl.java
	setup/db/create-schema.sql
	setup/db/db/schema-40to410.sql

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2012-12-23 13:54:46 -08:00
Edison Su b70c1a5a84 Backs NFS-based secondary storage with an S3-compatible object store. Periodically, a reaper thread synchronizes templates and ISOs stored on a NFS secondary storage mount with a configured S3 object store. It also pushes snapshots to the object store when they are created and downloads them in other zones on-demand. In addition to permitting the use of commodity or IaaS storage solutions for static assets, it provides a means of automatically synchronizing template and ISO assets across multiple zones. 2012-12-13 23:18:37 -08:00
Rohit Yadav e398b1e47a api: Refactor command and response classes to org.apache.cloudstack.api.*
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2012-12-07 19:23:24 -08:00
Rohit Yadav 6fc3bc3760 api_refactor: refactor vpn and vm apis
- Refactor VPN and VM APIs to admin and user pkgs
- Names space, org.apache.cloudstack
- Fix refactored apis in commands*.in
- Fix comments etc.
- Expand tabs, remove trailing whitespace

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2012-12-03 21:27:02 -08:00
Rohit Yadav 5edfc2760a refactor: remove redundant imports, fix trailing chars 2012-12-03 13:54:37 -08:00
David Nalley e87558256c Patch from Chip Childers
https://reviews.apache.org/r/5704/
License header updates for the server folder
2012-07-02 09:51:21 -04:00
frank 2f634c0913 Switch to Apache license 2012-04-03 04:50:05 -07:00
kishan 57f935ca03 Added since version to API response docs 2012-03-27 11:12:59 +05:30
Alena Prokharchyk 50b2c26d3e Fixed XML api writer
Reviewed-by: Alena
2012-02-27 12:38:30 -08:00
Alena Prokharchyk d4a8db75d7 bug 13763: fixed api doc for logout command
status 13763: resolved fixed
Reviewed-by: Jessica Tomechak
2012-02-22 15:17:22 -08:00
Alena Prokharchyk 8f91856822 bug 11859: Added Usage param to @Implementation in API docs. Usage would explain what parameters combinations are valid for specific cases
status 11859: resolved fixed
2011-11-28 14:40:13 -08:00
Alena Prokharchyk c66842b640 bug 11812: added domainId parameter to "login" api doc
status 11812: resolved fixed
2011-11-22 15:34:07 -08:00
Alena Prokharchyk 3c3cf26f64 Fixed API doc problem 2011-11-09 13:27:35 -08:00
kishan 8ee876a9a2 bug 10405: Added annontation since for API Commands and request parameters. Whenever a new APi or parameter is added since=version should be added
status 10405: resolved fixed
2011-10-27 14:18:34 +05:30
Edison Su 9391938908 fix conflict 2011-08-24 18:47:09 -07:00
alena 4005c7bcce bug 10193: modified description field for login api call in API docs
status 10193: resolved fixed
2011-06-20 16:25:08 -07:00
alena 40d4bbeb11 bug 10088: Fixed apiXmlDoc generator to generate correct set of domain admin commands - got broken by checkin fff4112c0b2407e754318ea31f2f1bb7e92b8f12 "Introducing a new user role in cloudstack called RESOURCE_DOMAIN_ADMIN"
status 10088: resolved fixed
2011-06-16 12:14:55 -07:00
alena 694944e996 bug 9436: include page/pageSize/keyword to api xml doc for each list* command
status 9436: resolved fixed

Conflicts:

	server/src/com/cloud/api/doc/ApiXmlDocWriter.java
2011-04-13 16:23:14 -07:00
alena 4460d1cf2c Fixed api xml doc writer 2011-04-11 09:33:36 -07:00
alena 2aeacd5a4c bug 3179: added "count" parameter to the response to all List* api commands 2011-04-01 19:29:08 -07:00
alena 8de3bacd2b bug 9026: added ability to turn off apiCommand/commandParameter for docGeneration
status 9026: resolved fixed

1) Don't expose following commands in doc:

* registerSSHKeyPair
* createSSHKeyPair
* deleteSSHKeyPair
* listSSHKeyPairs

2) Don't show "sshKeyPairName" parameter for deployVm command
2011-03-23 12:56:58 -07:00
alena e902e83d13 Fixed bug in xmlDocWriter: use "domain" parameter instead of "domainId" for "login" command 2011-03-04 10:31:58 -08:00
alena be76a51dbe Api xml doc generator: define if command is sync or async in the xml doc 2011-02-28 16:28:54 -08:00
alena 74e878ea7f Fixed xml doc writer 2011-02-09 19:35:03 -08:00
alena 1c7049ef26 Forgot to write login/logout commands to domainAdmin/regularUser api xml doc 2011-02-08 16:28:58 -08:00
alena 0bdefe03ae Added login/logout command generation to xml api doc generator 2011-02-08 15:25:55 -08:00
alena e256285b05 Generate alerts_types.xml document along with other xml docs. 2011-01-25 10:37:00 -08:00
alena 0d2be33b2d Changed response format in xml api doc generator 2011-01-14 17:55:32 -08:00
alena 5af31fc97c Modified API xml doc writer - sort request and response parameters in alphabetical order. 2011-01-14 11:18:54 -08:00
alena 4418e8f245 Don't zip Api xml doc directory in java code, rpm script will do it 2011-01-12 12:18:53 -08:00
alena 6ebbff60f4 Fixed Api xml doc generator 2011-01-11 15:26:04 -08:00