How StorageGRID provides security for the REST API

The StorageGRID system uses Transport Layer Security (TLS) connection security, server authentication, client authentication, and client authorization. When considering security issues, you might find it helpful to understand how the StorageGRID system implements security, authentication, and authorization for the REST API.

The StorageGRID system accepts HTTPS commands submitted over a network connection that uses TLS to provide connection security, application authentication and, optionally, transport encryption. Commands that do not use TLS are rejected. If an object is encrypted when it is ingested, it stays encrypted for the lifetime of the object in the StorageGRID system.

TLS enables the exchange of certificates as entity credentials and allows a negotiation that can use hashing and encryption algorithms.

When a StorageGRID system is installed, a certificate authority (CA) certificate is generated for the system, as well as server certificates for each Storage Node. These server certificates are all signed by the system CA. You need to configure client applications to trust this CA certificate. When a client application connects to any Storage Node using TLS, the application can authenticate the Storage Node by verifying that the server certificate presented by the Storage Node is signed by the trusted system CA.

Alternatively, you can supply a single, custom server certificate that should be used on all Storage Nodes rather than the generated ones. The custom server certificate must be signed by a CA selected by the administrator. The server authentication process by the client application is the same, but uses a different trusted CA.

To configure certificates, see the instructions for administering StorageGRID.

The following table shows how security issues are implemented in the S3 and Swift REST APIs:

Security issue Implementation for REST API
Connection security TLS
Server authentication X.509 server certificate signed by system CA or custom server certificate supplied by administrator
Client authentication
  • S3: S3 account (access key ID and secret access key)
  • Swift: Swift account (user name and password)
    Note: By request, you can enable OpenStack's Keystone identity service for use with the Swift REST API. If Keystone is enabled, you must use an additional token for validation. To enable Keystone support, contact your NetApp representative.
Client authorization
  • S3: Bucket ownership and all applicable access control policies
  • Swift: Administrator role access