文档

Security

Enforce security for Self-Hosted Deployment in Amazon Web Services.
阅读时间5 分钟最后更新于 14 天前

Identity and access management (IAM)

Deployment requires an AdministratorAccess policy in the target Amazon Web Services (AWS) account.
重要
Don't use the AWS account root user as part of the deployment or operation of the solution.
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\_autoscaler
OptionalAllows the cluster autoscaler to scale Amazon Elastic Kubernetes Service (EKS) nodes.
flexlm\_logs
OptionalAllows the FlexLM instance to create log groups and to stream logs to Amazon CloudWatch.
mongo\_ebs
OptionalAllows the MongoDB instance to attach and detach Amazon Elastic Block Storage (EBS) volumes.
mongo\_logs
OptionalAllows the MongoDB instance to create log groups and to stream logs to CloudWatch.
psmdb\_backup
OptionalRequired if Percona Server for MongoDB (PSMDB) is enabled. Allows the PSMDB operator to read and write backups in the PSMDB backup Amazon Simple Storage Service (Amazon S3) bucket.
read\_config\_secret
OptionalAllows the external-secrets deployment to communicate with AWS Secrets Manager secret to read the configuration.

IAM roles

Claim

Required

Description

cluster\_autoscaler
OptionalAllows the cluster autoscaler to scale EKS nodes.
dlm\_lifecycle\_role
OptionalAllows for MongoDB snapshots to be taken and stored.
ebs\_csi\_driver
OptionalAllows EKS to create persistent EBS volumes.
efs\_csi\_driver
OptionalAllows EKS to create persistent Amazon Elastic File System (EFS) volumes.
eks\_cluster
OptionalRequired if the EKS cluster is enabled.
external\_secrets
OptionalRequired if the EKS cluster is enabled. Used for reading configuration secrets.
flexlm
OptionalRequired for FlexLM licensing.
mongo
OptionalRequired if the MongoDB instance is enabled. Attached to the MongoDB EC2 instance, with the
mongo\_ebs
and
mongo\_logs
policies, the CloudWatch agent policy, and Systems Manager (SSM) access.
psmdb\_backup
OptionalRequired if PSMDB is enabled. The PSMDB operator uses this role through EKS Pod Identity to store backups in Amazon S3.
services\_node\_group
OptionalRequired 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\_cidrs
When 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\_cidrs
When 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\_db
An Npgsql Postgres connection string for the automation database.
image\_pull\_secrets\_dockerconfigjson
Credentials for pulling from the Self-Hosted Deployment container registry.
keycloak\_mini\_usf\_clientsecret
A 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\_string
The Npgsql Postgres connection string for the link-sharing database.
mongo\_db\_connection\_string
The connection string that is required for communicating with MongoDB.
postgres\_server
The hostname for the Postgres server. This key is taken from the RDS Postgres instance.
postgres\_user
The username for the Postgres instance.
postgres\_user\_password
The password for the Postgres instance.
redis\_connection\_host
The hostname for the Redis instance or the Valkey instance.
redis\_connection\_host\_and\_port
The hostname and the port for the Redis instance or the Valkey instance.
redis\_connection\_password
The password for Redis or Valkey.
uvcs\_authorization
The authorization header that is required for communicating with Unity Version Control (UVCS).
workspace\_service\_connection\_strings
The 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
Redis or ValkeyUsed to cache the temporary assets and metadata
MongoDB/PSMDBUsed 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

Both MongoDB deployment options handle encryption in transit and encryption at rest: