Configuring shared storage encryption with an AWS KMS key - AWS ParallelCluster

Configuring shared storage encryption with an AWS KMS key

Learn how to set up a customer managed AWS KMS key to encrypt and protect your data in the cluster file storage systems that are configured for AWS ParallelCluster.

When using the AWS ParallelCluster command line interface (CLI) or API, you only pay for the AWS resources that are created when you create or update AWS ParallelCluster images and clusters. For more information, see AWS services used by AWS ParallelCluster.

The AWS ParallelCluster UI is built on a serverless architecture and you can use it within the AWS Free Tier category for most cases. For more information, see AWS ParallelCluster UI costs.

AWS ParallelCluster supports following shared storage configuration options:

You can use these options to provide a customer managed AWS KMS key for Amazon EBS, Amazon EFS, and FSx for Lustre shared storage system encryption. To use them, you must create and configure an IAM policy for the following:

Prerequisites

Create the policy

Create a policy.
  1. Go to the IAM Console: https://console.aws.amazon.com/iam/home.

  2. Choose Policies.

  3. Choose Create policy.

  4. Choose the JSON tab and paste in the following policy. Make sure to replace all occurrences of 123456789012 with your AWS account ID and the key Amazon Resource Name (ARN) and AWS Region with that of your own.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ReEncrypt*", "kms:CreateGrant", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:region-id:123456789012:key/abcd1234-ef56-gh78-ij90-abcd1234efgh5678" ] } ] }
  5. For this tutorial, name the policy ParallelClusterKmsPolicy, and then choose Create Policy.

  6. Make a note of the policy ARN. You need it to configure your cluster.

Configure and create the cluster

The following is an example cluster configuration that includes an Amazon Elastic Block Store shared file system with encryption.

Region: eu-west-1 Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: my-ssh-key Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::123456789012:policy/ParallelClusterKmsPolicy Scheduling: Scheduler: slurm SlurmQueues: - Name: q1 ComputeResources: - Name: t2micro InstanceType: t2.micro MinCount: 0 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::123456789012:policy/ParallelClusterKmsPolicy SharedStorage: - MountDir: /shared/ebs1 Name: shared-ebs1 StorageType: Ebs EbsSettings: Encrypted: True KmsKeyId: abcd1234-ef56-gh78-ij90-abcd1234efgh5678

Replace the items in red text with your own values. Then, create a cluster that uses your AWS KMS key to encrypt your data in Amazon EBS.

The configuration is similar for Amazon EFS and FSx for Lustre file systems.

The Amazon EFS SharedStorage configuration is as follows.

... SharedStorage: - MountDir: /shared/efs1 Name: shared-efs1 StorageType: Efs EfsSettings: Encrypted: True KmsKeyId: abcd1234-ef56-gh78-ij90-abcd1234efgh5678

The FSx for Lustre SharedStorage configuration is as follows.

... SharedStorage: - MountDir: /shared/fsx1 Name: shared-fsx1 StorageType: FsxLustre FsxLustreSettings: StorageCapacity: 1200 DeploymentType: PERSISTENT_1 PerUnitStorageThroughput: 200 KmsKeyId: abcd1234-ef56-gh78-ij90-abcd1234efgh5678