Date: 05-Jun-2020
Top level | Breakdown | Measure of compliance | Detail | Public Links |
---|---|---|---|---|
External Certification | - | Where is the documentation showing external certification? | Does the service you are evaluating have the necessary external certification for your use case? | |
Identity & Access Management | Authentication | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle authentication? | |
Authorization | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle authorization? | ||
RBAC | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle RBAC? | ||
Privileged Access Management | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle Privileged Access Management? | ||
Encryption & Secure Data Management | Encryption in Transit | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle Encryption at Rest? | |
Encryption at Rest | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle Encryption in Transit? | ||
Certificate and Key Management | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle Certificate and Key Management? | ||
BYOK/HYOK Management | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle BYOK/HYOK Management? | ||
Network Security | Endpoint Localisation | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle Endpoint Localisation? | |
IP Firewall Rules | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle IP Firewall Rules? | ||
Data Exfiltration Prevention & Data Loss Prevention |
How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating handle Data Exfiltration and Loss Prevention? | ||
Logging & Monitoring | Security Monitoring & Alerting | How will you ensure the service you are evaluating meets this requirement? | Does the service you are evaluating offer security & Alerting | |
Service Monitoring | How will you ensure the service you are evaluating meets this requirement? | Does the CSP provide monitoring for this service? | ||
Alert & Incident Management | How will you ensure the service you are evaluating meets this requirement? | Is there Alert & Incident Management capabilities? | ||
Resilience & Recovery | Data Resilience (back-up/replication) | How will you ensure the service you are evaluating meets this requirement? | Are data backups and replication capabilities provided if needed? | |
Compute High Availability | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating provide high availability to suit your requirements? | ||
Underlying OS | Use of Latest Version | How will you ensure the service you are evaluating meets this requirement? | How does this service ensure it is using the latest stable/secure version of the underlying software? | |
- | How will you ensure the service you are evaluating meets this requirement? | How does the service you are evaluating manage the underlying operating system the service is built on? Is this maintained by the CSP? If not how will you ensure the necessary updates are performed etc? |
||
CSP Access | - | How will you ensure the service you are evaluating meets this requirement? | ||
Dependent Services | - | How will you ensure the service you are evaluating meets this requirement? |
Overview
This section is meant to provide an opinionated approach towards the implementation security controls by domain. Although the approaches may not be a fit for all use casees or complete for production use, they are meant to guide the reader towards current best practices and design considerations to achieve security control objectives.
Controls and Architectures
This table maps Security Domain to the corresponding controls and architectural best practices as documented in AWS’ public documentation, white papers, and blog posts.
Explanation of example below The content below is specific to an AWS service called RedShift. This content is only provided with a specific service so to give examples of what content could look like. When other cloud services are used this content would be similar to this depth and specificity but unique to the service. The opinionated approach requires the writer to provided specific recommendations that are relevant to financial regulated industry. The examples below are meant to provide knowledge that a person would gain through use at a production level. The writer should provide examples of issues at scale, security challenges, example compensating controls, or limitations. Please consider the below as a guide and format but not a template for which to replace names for services.
Security Domain | Control & Architectural Suggestions | References |
Encryption | ||
Encryption of data at-rest | AWS RedShift supports KMS and HSM to provide key material management and encryption services. Encryption at rest of RedShift encrypts the data blocks and system metadata of the cluster and its snapshots.[1] Note: By default, Amazon Redshift selects the account service default key as the master key. The default key is an AWS-managed key that is created for your AWS account to use in Amazon Redshift. JPMorgan Chase & Co. security controls prevent the use of default service KMS keys for sensitive workloads. Users should pre-create a customer managed CMK for RedShift usage. Implementation Note: Encryption is an optional, immutable setting of a cluster. If you want encryption, you enable it during the cluster launch process. To go from an unencrypted cluster to an encrypted cluster or the other way around, unload your data from the existing cluster and reload it in a new cluster with the chosen encryption setting. [2] For S3 encryption details see S3 Accelerator. For KMS details see KMS Accelerator |
|
Encryption of data in-transit |
Best practice:
|
|
Encryption Key Management |
rotate-encryption-key --cluster-identifier < value> [--cli-input-json < value> ] [--generate-cli-skeleton < value> ] Note: Snapshots stored in S3 will need to be decrypted prior to key rotation and then re-encrypted using the new DEK. This is a process that should be tested prior to production use. |
|
Infrastructure | ||
Isolation of physical hosts | N/A: RedShift is a fully-managed service and for cluster nodes the isolation of hosts is not currently possible via dedicated host ec2-resources. Reserved instances can be purchased to ensure availability of ec2 resource types. | |
Network Isolation | When an Amazon Redshift cluster is provisioned, it is locked down by default so nobody has access to it except to IAM entities with Console access from within the provisioned network and with the default credentials. Amazon Redshift provides a cluster security group called default, which is created automatically when you launch your first cluster. Initially, this cluster security group is empty. You can add inbound access rules to the default cluster security group and then associate it with your Amazon Redshift cluster. To grant other users inbound access to an Amazon Redshift cluster, you associate the cluster with a security group. To grant access use an existing Amazon VPC security group or define a new one and then associate it with a cluster. For more information on managing a cluster on the EC2-VPC platform, see Managing Clusters in an Amazon Virtual Private Cloud (VPC). Amazon RedShift relies on EC2 security groups to provide infrastructure security, and thus initial protection from unauthorized traffic connecting to the cluster. [1] Best Practice
See S3 Accelerator for controls around S3 and data isolation. |
|
AWS Network |
|
|
IAM | ||
Admin Accounts |
|
|
Role Based Access Control |
{ "Version": "2012-10-17", "Statement": { "Sid":"AllowCreateProductionCluster", "Effect": "Allow", "Action": "redshift: CreateCluster", "Resource": "*" "Condition":{"StringEquals":{"redshift: RequestTag/usage":"production"} } }
{ "Version": "2012-10-17", "Statement": { "Sid":"AllowModifyTestCluster", "Effect": "Allow", "Action": "redshift: ModifyCluster", "Resource": "arn:aws:redshift:us-west-2:123456789012:cluster:*" "Condition":{"StringEquals":{"redshift: ResourceTag/environment":"test"} } } For example: A deny policy to limit actions to a specific Redshift Cluster environment “production*”. { "Version": "2012-10-17", "Statement": [ { "Sid":"AllowClusterManagement", "Action": [ "redshift: CreateCluster", "redshift: DeleteCluster", "redshift: ModifyCluster", "redshift: RebootCluster" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid":"DenyDeleteModifyProtected", "Action": [ "redshift: DeleteCluster", "redshift: ModifyCluster" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:cluster:production*" ], "Effect": "Deny" } ] }
|
|
Authorization between AWS services |
|
|
Authentication to AWS platform | RedShift supports local and IAM based authentication. To align to best practice Redshift local users should have passwords disabled which forces authentication based on IAM.
|
|
Authorization (AWS IAM) of corporate users via Active Directory for access to RedShift resources. | Amazon Redshift requires IAM credentials that AWS can use to authenticate your requests. Those credentials must have permissions to access AWS resources, such as an Amazon Redshift cluster. AWS Identity and Access Management (IAM) enable organizations with multiple employees to create and manage multiple users, groups and roles under a single AWS account. With IAM policies, companies can grant IAM users/groups/roles fine-grained control to their Amazon RedShift data while also retaining full control over everything the users do. JPMorgan Chase & Co. has setup federation with AWS accounts. Therefore, the only decision to make is what API actions are needed for roles, groups, or users within IAM [2]. To combine these concepts to control access to RedShift resources, a user would:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetClusterCredsStatement", "Effect": "Allow", "Action": [ "redshift: GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/${redshift: DbUser}", "arn:aws:redshift:us-west-2:123456789012:dbname:examplecluster/testdb", "arn:aws:redshift:us-west-2:123456789012:dbgroup:examplecluster/common_group" ], "Condition": { "StringEquals": { "aws:userid":"AIDIODR4TAW7CSEXAMPLE:${redshift: DbUser}@yourdomain.com" } } }, { "Sid": "CreateClusterUserStatement", "Effect": "Allow", "Action": [ "redshift: CreateClusterUser" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/${redshift: DbUser}" ], "Condition": { "StringEquals": { "aws:userid":"AIDIODR4TAW7CSEXAMPLE:${redshift: DbUser}@yourdomain.com" } } }, { "Sid": "RedshiftJoinGroupStatement", "Effect": "Allow", "Action": [ "redshift: JoinGroup" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbgroup:examplecluster/common_group" ] } ] } } }
|
|
Tagging | Amazon Redshift supports tagging to provide metadata about resources at a glance, IAM enforcement, and to categorize your billing reports based on cost allocation. Best Practice: Since tags can be used to enforce IAM entity abilities it is important to set appropriate controls on changes to tags with API actions like (DeleteTags, CreateTags) Note: tags are not retained if you copy a snapshot to another region, so you must recreate the tags in the new region |
|
Logging & Monitoring | ||
Logging activity within RedShift | Audit logging is not enabled by default in Amazon Redshift. When you enable logging on your cluster, Amazon Redshift creates and uploads logs to Amazon S3 that capture data from the creation of the cluster to the present time. To meet logging requirements make sure to enable audit logging:
As a best practice, after a configuration of RedShift is found to be functional and meet requirements make sure to commit all settings into a parameter group so all databases within a cluster are configured the same and each new cluster can be configured the same. (a final deployed cluster should not have parameter group = default.redshift-1.0 because this will not enable logging or other settings specific to JPMorgan Chase & Co. requirements.) |
|
Logging API actions | Cloudtrail will be enabled in every account as part of a default account build. | |
Alerting and Incident Management | You can use the following automated monitoring tools to watch RedShift and report when something is wrong:
Implementation Note: To access logs and data for monitoring the data must be decrypted. To decrypt logs/data a customer managed CMK must be defined. Use the same CMK created to encrypt the cluster and create a new policy to grant access only to API actions necessary for tables and actions that are authorized. For example: Use guides in reference [1] where cloudformation templates already exist and can be used to provide a prescriptive approach to collecting and monitoring logs. Make note of the minimum requirements for access to the Redshift user that is required. Be cautious not to enable more than the necessary “grant select on all tables in schema pg_catalog to tamreporting” entitlement. Note Audit logging to Amazon S3 is an optional, manual process. When you enable logging on your cluster, you are enabling logging to Amazon S3 only. Logging to system tables is not optional and happens automatically for the cluster. For more information about logging to system tables, see System Tables Reference in the Amazon Redshift Database Developer Guide. |
|
Patch/Updates | ||
Update/Patch for RedShift | When Redshift is configured a maintenance window must be defined to allow for updates to be installed. This window Additional considerations include:
|
|
Availability | ||
Backup and Restore |
|
|
Limits | Understanding the limitations of the service can help prevent unintentional outages or ability to meet requirements. Items like:
|
Clair Control Reference | Detective | Preventative | Responsive |
---|---|---|---|
Detective [3]
Ensure only JPMorgan Chase & Co. key material is used for KMS CMK.
Run this:
aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
The output of the above command should have a line with “"Origin": "EXTERNAL".
Ensure Redshift clusters are encrypted
In Cloudformation template or via api action
Run this:
aws redshift describe-clusters
The output should have the following statements be true:
KmsKeyId is not null
Encrypted = True
Preventative
KMS key creation is highly restricted and process to create new keys should eliminate the risk of keys being created without exported key material.
Cloudformation templates should be parsed during check-in for parameter settings expected (defined in detective controls section).
Responsive
In the event encryption settings or key configuration are detected to be not in expected state then a responsive action is necessary.
Automated actions can and should be developed to ensure best practice is enforced as quickly as possible.
Until automation occurs manual steps can be taken.
With the detective control for KMS keys in place it will be possible to just create a process to migrate clusters without encryption or unauthorized KMS key to a new cluster with proper KMS key.