Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • CloudStack will work with an attestation server to secure the deployed Hosts - the attestation server has the capability to compare launch values against "known good"
  • When setting up a cloudstack environment, automatically understand which hosts are "trustworthy" and present it to the admin.
  • Administrators are able to create a service offering that will allow users to select if they need the VMs to be deployed on trusted hosts.
  • Ensure that instances requested in such a manner are always placed on trusted hosts. Instances that do not require a trusted host will not be blocked from getting deployed on a trusted host.
  • Whenever a trusted host or the attestation server itself is rebooted, verify the trustworthiness.
  • Migration of VM from a trusted to untrusted host should be allowed but it should raise an alert.

Non requirements

  • The attestation server will not be managed by cloudstack. It'll have to be setup and configured and then registered with cloudstack for checking the trust attributes of a host.
  • For checking the trust assertions of a host, a trust agent should be running on the host. Attestation server checks with the agent the trust relationship of the host. The trust agent should already have been configured.

...

  • Only one attestation server can be registered with a per zone in cloudstack management server.
  • The attestation service can be enabled or disabled through a global configuration parameter 'enable.attestation.serviceenable' (Boolean: true/false). It'll be disabled by default.
  • A root administrator can register the details of an attestation server by making a registerAttestationServer api call. This is an async call. Cloudstack management server will open a connection to the attestation server and it'll use the KeystoreUtil.createUserInDirectory client library api call to register/create a user. On successful registration the attestation server details will be persisted in the db.
  • The above request for a new user needs to be approved by an attestation server administrator. This is a manual process and will be included in the documentation.
  • If an attestation server is already registered with the management server, any subsequent requests to register another attestation server will fail. Administrator will have to unregister with the existing attestation server and carry out a new registration.

Registering a host for attestation

Checking the trust relationship of an host

  • Whenever management server connects to a host, the processConnect callback routine gets triggered for the plugin.
  • It verifies if attestation check is enabled in the global config and if an attestation server has been registered for the zone to which the host belongs.
  • It opens a connection to the attestation server with the credentials registered with cloudstack.
  • It then checks the assertion attributes for the host; i.e if the host is trusted or not. For that it makes an api.getSamlForHost(<HostIp>) call.
    • If a host assertion not available exception is thrown, it means the whitelist configuration for the host hasn't been done and it hasn't been registered with the attestation server.
    • To do the whitelist configuration and registration of host a configureWhiteList followed by registerHost api calls are made to the attestation server. Open Issue 1.
    • These calls will be needed only when management server connects to a host for the first time.
  • The assertion attributes are checked to make sure the host is trusted. Accordingly the host_details table is updated with a new name value pair 'trusted':true/false. Open Issue 2.

...