Commit Graph

244 Commits

Author SHA1 Message Date
Rohit Yadav 366d82e292 FR12 (CLOUDSTACK-9993): Secure Agent Communications (#38)
This introduces a new certificate authority framework that allows
pluggable CA provider implementations to handle certificate operations
around issuance, revocation and propagation. The framework injects
itself to `NioServer` to handle agent connections securely. The
framework adds assumptions in `NioClient` that a keystore if available
with known name `cloud.jks` will be used for SSL negotiations and
handshake.

This includes a default 'root' CA provider plugin which creates its own
self-signed root certificate authority on first run and uses it for
issuance and provisioning of certificate to CloudStack agents such as
the KVM, CPVM and SSVM agents and also for the management server for
peer clustering.

Additional changes and notes:
- Comma separate list of management server IPs can be set to the 'host'
  global setting. Newly provisioned agents (KVM/CPVM/SSVM etc) will get
  radomized comma separated list to which they will attempt connection
  or reconnection in provided order. This removes need of a TCP LB on
  port 8250 (default) of the management server(s).
- All fresh deployment will enforce two-way SSL authentication where
  connecting agents will be required to present certificates issued
  by the 'root' CA plugin.
- Existing environment on upgrade will continue to use one-way SSL
  authentication and connecting agents will not be required to present
  certificates.
- A script `keystore-setup` is responsible for initial keystore setup
  and CSR generation on the agent/hosts.
- A script `keystore-cert-import` is responsible for import provided
  certificate payload to the java keystore file.
- Agent security (keystore, certificates etc) are setup initially using
  SSH, and later provisioning is handled via an existing agent connection
  using command-answers. The supported clients and agents are limited to
  CPVM, SSVM, and KVM agents, and clustered management server (peering).
- Certificate revocation does not revoke an existing agent-mgmt server
  connection, however rejects a revoked certificate used during SSL
  handshake.
- Older `cloudstackmanagement.keystore` is deprecated and will no longer
  be used by mgmt server(s) for SSL negotiations and handshake. New
  keystores will be named `cloud.jks`, any additional SSL certificates
  should not be imported in it for use with tomcat etc. The `cloud.jks`
  keystore is stricly used for agent-server communications.
- Management server keystore are validated and renewed on start up only,
  the validity of them are same as the CA certificates.

New APIs:
- listCaProviders: lists all available CA provider plugins
- listCaCertificate: lists the CA certificate(s)
- issueCertificate: issues X509 client certificate with/without a CSR
- provisionCertificate: provisions certificate to a host
- revokeCertificate: revokes a client certificate using its serial

Global settings for the CA framework:
- ca.framework.provider.plugin: The configured CA provider plugin
- ca.framework.cert.keysize: The key size for certificate generation
- ca.framework.cert.signature.algorithm: The certificate signature algorithm
- ca.framework.cert.validity.period: Certificate validity in days
- ca.framework.cert.automatic.renewal: Certificate auto-renewal setting
- ca.framework.background.task.delay: CA background task delay/interval
- ca.framework.cert.expiry.alert.period: Days to check and alert expiring certificates

Global settings for the default 'root' CA provider:
- ca.plugin.root.private.key: (hidden/encrypted) CA private key
- ca.plugin.root.public.key: (hidden/encrypted) CA public key
- ca.plugin.root.ca.certificate: (hidden/encrypted) CA certificate
- ca.plugin.root.issuer.dn: The CA issue distinguished name
- ca.plugin.root.auth.strictness: Are clients required to present certificates
- ca.plugin.root.allow.expired.cert: Are clients with expired certificates allowed

UI changes:
- Button to download/save the CA certificates.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2017-09-26 09:19:31 +05:30
Rajani Karuturi 5da733072e CLOUDSTACK-5236 : ability to identify where the user is from (ex. LDAP)
Added a source column to the user table.

Source now has only two values UNKNOWN,LDAP with UNKNOWN being the
default and is an enum is com.cloud.User.

When the source is UNKNOWN, the old method of authenticating against all
the available authenticators is used. If a source is available, only
that particular authenticator will be used.

added overloaded methods in AccountService to createUserAccount and
createUser with source specified.
2015-03-16 12:35:37 +05:30
Kishan Kavala 1e87f3b80b Bug-Id: CLOUDSTACK-3439: Include dynamically created nics in Prepare for migration command in KVM
(cherry picked from commit f767adfe71)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-18 18:19:24 +05:30
Alena Prokharchyk 8b98cc2202 CS-19072: fixed broken pagination and count in listNetworkOfferings 2014-07-28 14:44:04 -07:00
Hugo Trippaers dbc7d80329 Aggregate command cleanup is not required for the virtual router as we
already cleanup in the finish.

And consequently dies if somebody tries to test with assertions enabled.
2014-07-16 16:24:54 +02:00
Jayapal 73b622c823 CLOUDSTACK-7068: addIpToNicCmd changed to BaseAsyncCreate 2014-07-09 14:57:25 +05:30
Hugo Trippaers cd0ef09344 Fix typo and add the right exception to the error map. 2014-06-25 15:51:28 +02:00
Daan Hoogland c79ab570b0 Revert "CLOUDSTACK-6967: Initial OVM3 drop"
This reverts commit 8a485b9b59.
2014-06-24 10:24:01 +02:00
Funs 8a485b9b59 CLOUDSTACK-6967: Initial OVM3 drop
Signed-off-by: Sebastien Goasguen <runseb@gmail.com>
(cherry picked from commit ed47763e25)

Conflicts:
	api/src/com/cloud/network/NetworkService.java
	api/src/org/apache/cloudstack/api/ApiConstants.java
	api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
	engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java
	plugins/pom.xml
	server/src/com/cloud/network/NetworkServiceImpl.java
	server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
	server/test/com/cloud/vpc/MockNetworkManagerImpl.java
	ui/scripts/docs.js
2014-06-23 12:39:10 +02:00
Min Chen ba848087f8 Disable IAM feature from 4.4 release. 2014-05-22 18:27:08 -07:00
Anthony Xu df6ce24f43 if networkID is not specified, get one network with free ips. 2014-05-21 14:33:52 -07:00
Min Chen 94ebc90877 Remove usage of sameOwner checkAccess invocation, and convert to
OperateEntry IAM check.
2014-04-04 16:38:29 -07:00
Murali Reddy d2d54a9463 region level VPC support
introduce 'RegionLevelVpc' as capability of 'Connectivity' service. Add
support for CreateVPCOffering to take the 'regionlevelvpc' as capability
of service 'connectivity'.

introduces new capability 'StretchedL2Subnet' for 'Connectivity'
service. Also add support to createNetworkOffering api to allow
StretchedL2Subnet capablity for the connectivity service.

adds check to ensure 'Connectivity' service provider supports
'StretchedL2Subnet' and 'RegionLevelVpc' capabilities when specified in
createNetworkOffering and createVpcOffering respectivley

enable ovs plug-in to support both StretchedL2Subnet and RegionLevelVpc
capabilities

make zone id optional parameter in createVpc, zone id can be null only
if vpc offfering supports region level VPC

in region level vpc, let the network/tier to be created in any zone of
the region

keep zoneid as required param for createVpc

skip external guest network guru if 'Connectivy' service is present in
network offering

fix build break in contrail manager

permit VM's to be created in different zone that in which network is
created if the network support streched L2 subnet

add integration tests for region level VPC

rebase to master

Conflicts:
	setup/db/db/schema-430to440.sql

Conflicts:
	api/src/org/apache/cloudstack/api/ApiConstants.java
	engine/schema/src/com/cloud/network/vpc/VpcVO.java
	setup/db/db/schema-430to440.sql
2014-03-20 16:32:22 +05:30
Alena Prokharchyk d9e1c9c502 CLOUDSTACK-6205: VPC VR start - skip private gateway when create Guest nics as the nic for the private gateway is being created separately
Conflicts:
	server/src/com/cloud/network/NetworkModelImpl.java
	server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
2014-03-14 11:57:58 -07:00
Murali Reddy 794b38a789 fix unit-test failure 2014-03-14 17:19:27 +05:30
Murali Reddy 3139b35518 mark VPC to be using distributed router if VPC offerign supports
distributedrouter capability.
2014-03-14 16:56:35 +05:30
Min Chen 99bdc8d875 Merge branch 'master' into rbac. 2014-03-13 11:05:03 -07:00
Sheng Yang f45de30d1b CLOUDSTACK-6047: Enable VR aggregation commands for VR start/reboot 2014-03-11 13:04:26 -07:00
Alena Prokharchyk bf9375b8b9 CLOUDSTACK-6214: apply network rules when plug new guest nic to router for the network in Setup state
Conflicts:
	server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java
	server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java

Conflicts:
	api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java
	server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java
	server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
	server/test/com/cloud/vpc/MockVpcVirtualNetworkApplianceManager.java
2014-03-10 11:42:24 -07:00
Min Chen 48e08fe676 Merge branch 'master' into rbac. 2014-03-06 14:02:20 -08:00
Alena Prokharchyk 5a8d165afa CLOUDSTACK-6198: use List DS for storing NicProfiles as public network can have more than one nic
Conflicts:
	engine/api/src/com/cloud/vm/VirtualMachineManager.java
	engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java
	engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
	engine/orchestration/src/org/apache/cloudstack/engine/orchestration/CloudOrchestrator.java
	engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
	plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
	plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
	plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ServiceManagerImpl.java
	server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
	server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
	server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
	server/test/com/cloud/vpc/MockNetworkManagerImpl.java
	services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
2014-03-04 15:37:52 -08:00
Alena Prokharchyk e2ec094722 Display flag support for VpnConnection/VpnGateway/RemoteAccessVpn 2014-02-21 14:51:22 -08:00
Alena Prokharchyk 83bef78390 Fixed unittest 2014-02-21 14:29:00 -08:00
Alena Prokharchyk 0f489732c8 Display flag support for LB/InternalLB/NetworkACL rules 2014-02-21 14:03:10 -08:00
Alena Prokharchyk 2f7bfc0c73 Display flag support for publicIpAddress and VPC. Once set to false, the object is not listed to the regular user. Available to be set by Root admin only 2014-02-20 17:15:42 -08:00
Min Chen 3b58a45e04 Merge branch 'master' into rbac. 2014-02-07 13:43:36 -08:00
Alena Prokharchyk 4305d817ba External UUID control support for PublicIpAddress/RemoteAccessVpn/PortForwardingRule/S2SVpnGateway/S2SVpnConnection 2014-02-05 15:56:40 -08:00
Alena Prokharchyk 8065ee445f External UUID control support for VPC and NetworkACLItemp 2014-02-04 15:47:12 -08:00
Alena Prokharchyk 6af6ce7e9e 1) Added External UUID control support for network.
2) Moved UUIDManager interface to cloud-util package
2014-02-04 15:47:12 -08:00
Prachi Damle f84375442e Merge branch 'master' into rbac
Conflicts:
	api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmProfilesCmd.java
	api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java
	plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
	server/src/com/cloud/api/ApiServer.java
	server/src/com/cloud/api/query/QueryManagerImpl.java
	server/src/com/cloud/template/TemplateAdapterBase.java
	setup/db/db/schema-430to440.sql
	tools/apidoc/gen_toc.py
2014-02-04 12:07:32 -08:00
Marcus Sorensen 0502d2f375 CLOUDSTACK-5697 This patchset fixes a bug with the recently merged
vxlan code. Users can set a physical network to isolation type 'vxlan',
put public traffic on that physical network, and it will still attempt
to use 'vlan' isolation on the KVM hosts. This is going to be an issue
for other isolation types as well, but I'm not familiar with them, so
I'm just fixing vxlan for now.
2014-01-27 12:11:18 -07:00
Min Chen 929fbabaa2 Merge branch 'master' into rbac. 2014-01-17 14:37:08 -08:00
Murali Reddy af657b3d71 CLOUDSTACK-5861: networks that failed to implement can not be destroyed
introduces a force option in delete network to forcifully delete a
network. This comes handy in rare cases where network fails to implenet
and network is in shutdown state, but network shutdown to rollback
implement process fails as well.

Conflicts:
	api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkCmd.java
	server/src/com/cloud/user/DomainManagerImpl.java
2014-01-13 23:28:35 +05:30
Hugo Trippaers 7c8facf3c9 Change checkstyle to run on every sub project, so it will also run when you build an individual module 2014-01-09 17:00:11 +01:00
Alena Prokharchyk b15431e574 CLOUDSTACK-5810: addSecondaryIp to vm's nic - derive the ip owner from the vm instance account, not from the caller 2014-01-06 17:09:14 -08:00
Alena Prokharchyk 647ea6e2d0 listNics API: added optional networkId parameter allowing to list nics by network id for the specific vm 2014-01-06 17:09:14 -08:00
Murali Reddy 8b151c98c2 CLOUDSTACK-5403: Shared network - None of PF, LB rules work after router
restart, firewall rules dropped from iptables post restart

on VR restart, not all public IP's associated with the network are sent
with IpAssocCmd to VR. This fix will ensure all the ip's associated with
the network irrespective of the account are sent as part of
IpAssocCommand

Conflicts:
	server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
2013-12-27 14:27:57 +05:30
Alena Prokharchyk 914bc46484 CLOUDSTACK-5390: when calculate index (page #) in NetworkManager, rely on fact that getStartIndex() returned by API, returns pageSize*(page-1). So to get index(page), you need to do the reverse calculation 2013-12-23 16:28:06 -08:00
Kishan Kavala cca60cd86d fix network ACL unit test 2013-12-23 17:27:16 +05:30
Nitin Mehta 83bbe682d9 CLOUDSTACK-5281:
Resource limit shouldnt be counted for resources with display flag = 0. Correcting this for the networks at the moment.
2013-12-20 17:42:45 -08:00
Kishan Kavala cc27a740dc CLOUDSTACK-5528 : When VR version is not known set requiresUpgrade flag to true
Conflicts:
	server/src/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java
	server/test/com/cloud/vpc/NetworkACLServiceTest.java
2013-12-18 18:29:08 +05:30
Alex Huang cf0a11e45a pull merges 2013-12-12 13:00:26 -08:00
Alex Huang be5e5cc641 All Checkstyle problems corrected 2013-12-12 12:26:07 -08:00
Antonio Fornie 7833dd592c JUnit test for NetworkACLManagerImpl#applyNetworkACL
Signed-off-by: Daan Hoogland <dhoogland@schubergphilis.com>
2013-12-12 15:01:51 +01:00
Jayapal b385cb4f7a Fixed test case failures in network acl 2013-12-11 14:20:11 +05:30
Jayapal 5c12250dea CLOUDSTACK-5278 Fixed cleaning up egress default rules on VR and SRX
1. Egress default policy rules is send to the firewall provider. It is up to the
    provider to configure the rules.
   2. The default policy rules are send for both allow and deny default policy.
   3. On network shutdown rules for delete are send.
   4. For VR and SRX, by default deny the traffic. So no default rule to deny traffic is required.
2013-12-10 14:19:03 +05:30
Kishan Kavala 587f587621 CLOUDSTACK-5145 : Added permission checks while listing network ACLs and acl Items. Users will be able to list items that they have access to.
Conflicts:
	api/src/com/cloud/network/vpc/NetworkACLService.java
	api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLListsCmd.java
	server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
	server/test/com/cloud/vpc/NetworkACLServiceTest.java
2013-12-09 21:57:47 +05:30
Nitin Mehta 414d415dba CLOUDSTACK-5281:
Resource limit shouldnt be counted for resources with display flag = 0. Adding functions to resourcelimitmanager and doing it for the volumes at the moment.
2013-11-26 16:21:45 -08:00
Alex Huang 170f32f171 Broke up some long strings 2013-11-21 07:25:01 -08:00
Alex Huang d620df2bdd Reformatted all of the code. 2013-11-21 06:15:26 -08:00