Documentation

Support

Security

Enforce security for Unity Virtual Private Cloud in Amazon Web Services
Read time 3 minutesLast updated 5 months ago

Identity and access management (IAM)

Deployment requires an
AdministratorAccess
policy
in the target Amazon Web Services (AWS) account.
The configuration includes a combination of roles and policies, which AWS and the customer manage. The principle of least privilege applies. Users can perform only the necessary actions on the deployed resources.

IAM policies

Claim

Required

Description

cluster_autoscalerOptionalAllows the cluster autoscaler to scale Amazon Elastic Kubernetes Service (EKS) nodes.
flexlm_logsOptionalAllows the FlexLM instance to create log groups and to stream logs to Amazon CloudWatch.
mongo_ebsOptionalAllows the MongoDB instance to attach and detach Amazon Elastic Block Storage (EBS) volumes.
mongo_logsOptionalAllows the MongoDB instance to create log groups and to stream logs to CloudWatch.
read_config_secretOptionalAllows the external-secrets deployment to communicate with AWS Secrets Manager secret to read the configuration.

IAM roles

Claim

Required

Description

cloudwatch_observabilityOptionalAllows the EKS CloudWatch Agent to send logs to CloudWatch.
cluster_autoscalerOptionalAllows the cluster autoscaler to scale EKS nodes.
dlm_lifecycle_roleOptionalAllows for MongoDB snapshots to be taken and stored.
ebs_csi_driverOptionalAllows EKS to create persistent EBS volumes.
efs_csi_driverOptionalAllows EKS to create persistent Amazon Elastic File System (EFS) volumes.
eks_clusterOptionalRequired if the EKS cluster is enabled.
external_secretsOptionalRequired if the EKS cluster is enabled. Used for reading configuration secrets.
flexlmOptionalRequired for FlexLM licensing.
services_node_groupOptionalRequired if the EKS cluster is enabled.

Networking

The deployed security groups require a configuration that allows ingress from only the specified required resources:
  • IP address ranges, in Classless Inter-Domain Routing ranges (CIDR) notation
  • Ports
  • Protocols
This configuration includes communication to and from these resources:
  • The EKS cluster
  • Amazon Relational Database Service (RDS) Postgres
  • The Amazon Elastic Load Balancers
Modify these Terraform variables:

Variable

Description

internal_ingress_cidrsWhen you create a security group, this variable restricts network access between the resources. The default value is
0.0.0.0/0
, but you must restrict it based on your network configuration.
allowed_ingress_cidrsWhen using Traefik with the LoadBalancer configuration, you might want to allow access to the Frontend Dashboard. To allow traffic from specific ranges IP addresses for the security group, modify this variable with a list of allowed IP address ranges in CIDR notation.

Public access

To expose the private resources to the public internet while limiting access, the default deployment process provisions these resources:
  • An external load balancer, to be used as ingress. To disable the loader balancer functionality, change the Terraform variable traefik_service_type from
    LoadBalancer
    to
    NodePort
    .
  • A list of allowed IP address ranges in Classless Inter-Domain Routing ranges (CIDR) notation, to limit access. To manage this list, use the Terraform variable allowed_ingress_cidrs.

Secrets

AWS Secrets Manager stores all application secrets and infrastructure secrets in a single secret. The name of the secret is configured in the Terraform variable aws_secretsmanager_secret_config_name. The default value is
asset-solutions/configuration
. The secret is a .json file with these keys:

Key name

Description

automation_connectionstring_dbAn Npgsql Postgres connection string for the automation database.
image_pull_secrets_dockerconfigjsonCredentials for pulling from the Unity Virtual Private Cloud container registry.
keycloak_mini_usf_clientsecretA client secret key that the mini-usf uses service to communicate with Keycloak. During rotation, first update this key from the Keycloak admin console.
linksharing_service_connection_stringThe Npgsql Postgres connection string for the link-sharing database.
mongo_db_connection_stringThe connection string that is required for communicating with MongoDB.
postgres_serverThe hostname for the Postgres server. This key is taken from the RDS Postgres instance.
postgres_userThe username for the Postgres instance.
postgres_user_passwordThe password for the Postgres instance.
redis_connection_hostThe hostname for the Elasticache Redis instance.
redis_connection_host_and_portThe hostname and the port for the Elasticache Redis instance.
redis_connection_passwordThe Elasticache Redis password.
uvcs_authorizationThe authorization header that is required for communicating with Unity Version Control (UVCS).
workspace_service_connection_stringsThe Npgsql Postgres connection string for the workspace database.

Data storage

Sensitive data

The following data stores contain customer data:

Data Store

Description

Storage backend (UVCS)Used to store customer assets
ElasticsearchUsed for search in asset metadata
Elasticache RedisUsed to cache the temporary assets and metadata
MongoDBUsed to store asset metadata
RDS PostgresUsed to persist the Keycloak users, roles, sessions, and admin events Used to store Unity Cloud Automation events

Encryption

The following AWS resources use encryption with keys that AWS manages. AWS Key Management Service (KMS) generates and encrypts the data key that resources use for encryption.

Amazon Simple Storage Service

The process uses Amazon Simple Storage Service (Amazon S3) to store the Terraform backend. Amazon S3 uses the default server-side encryption (SSE-S3).

Amazon Elastic File System

The process uses EFS to persist volumes within Kubernetes. EFS uses the AES-256 encryption algorithm to secure data and metadata at rest. The process uses the Container Storage Interface (CSI) Driver for Amazon EFS to encrypt data in transit.

Amazon Elastic Block Storage

The process uses EBS for persistent volumes within the following machines, including snapshots:
  • Kubernetes machines
  • Amazon Elastic Compute Cloud (EC2) machines that are deployed outside of Kubernetes
Amazon EBS encryption automatically encrypts data at rest and data in transit between the instance and the attached EBS volume.

Amazon Relational Database Service Postgres

The process encrypts data and backups both at rest and in transit.

MongoDB

MongoDB Atlas handles both encryption in transit and encryption at rest.