Code Monkey home page Code Monkey logo

terraform-aws-swift-digital-connectivity's Introduction

SWIFT Client Connectivity—Terraform module

This solution uses a Terraform module to deploy SWIFT Client Connectivity in the Amazon Web Services (AWS) Cloud. It creates a standardized environment for organizations with backend payment applications that need to interface with the SWIFT financial-messaging network.

This module's default configuration follows the SWIFT Customer Security Programme (CSP) controls and the SWIFT Customer Security Controls Framework (CSCF), which comprises mandatory and advisory security controls for all SWIFT users. These templates do not replace the need for customer guidance when implementing SWIFT security controls in the cloud.

AWS is responsible for complying with certain SWIFT CSP requirements. A certificate of AWS compliance with SWIFT CSP controls is available through AWS Artifact. Certification is provided by Dixio.

AWS has also published a solution for deploying SWIFT Client Connectivity Using AWS Cloud Development Kit (AWS CDK).

Deploying this solution does not guarantee an organization’s compliance with any laws, certifications, policies, or other regulations.

This Partner Solution was developed by AWS.

Costs and licenses

This deployment requires a SWIFT account and software license. To register for a SWIFT account, refer to How to become a swift.com user?

There is no cost to use this solution, but you'll be billed for any AWS services or resources that this solution deploys. For more information, refer to the AWS Partner Solution General Information Guide.

Architecture

This solution deploys into an existing virtual private cloud (VPC).

Architecture for SWIFT Client Connectivity on AWS, Terraform module

As shown in the diagram, this solution sets up the following:

  • An architecture that spans two Availability Zones.
  • A VPC configured with private subnets according to AWS best practices and following SWIFT CSP guidance.
  • In the private subnets:
    • An Amazon Elastic Compute Cloud (Amazon EC2) instance that runs Alliance Messaging Hub (AMH) and SWIFT Alliance Access (SAA) or Lite2.
    • An EC2 instance that runs SWIFT Alliance Gateway (SAG) and SWIFTNet Link (SNL).
    • An Amazon Relational Database Service (Amazon RDS) Oracle instance running in active or standby mode to store configuration and message data for AMH.
    • (Optional) An Amazon MQ instance to handle communication for AMH.
  • AWS Systems Manager, which removes the need for a jump server.
  • Amazon CloudWatch, which provides the mechanism to store, access, and monitor SWIFT activities.
  • AWS Secrets Manager, which encrypts, stores, and retrieves passwords.
  • A virtual private network (VPN) gateway with load balancing, which connects the VPC to AWS Direct Connect.*
  • AWS Direct Connect, which establishes private connectivity between AWS and data centers or colocation environments.*

*The Terraform module that deploys this solution does not include the components marked by asterisks because they require design decisions on how to connect to the SWIFT network.

Deployment steps

  1. Install the latest version of Terraform. For instructions, refer to Install Terraform.
  2. Install the latest version of AWS Command Line Interface (AWS CLI). For instructions, refer to Installing or updating the latest version of the AWS CLI.
  3. Run aws configure to configure AWS CLI with the ACCESS_KEY_ID, SECRET_ACCESS_KEY, and REGION corresponding to your AWS Identity and Access Management (IAM) user.
  4. Configure Terraform, and edit variables.tf to fill in your information.
  5. Review the resources in main.tf, and edit as necessary with your details.
  6. Provision the environment by running the following: terraform init terraform apply

More information

For more information, refer to the deployment guide for SWIFT Client Connectivity Using AWS CDK. That guide includes sections that pertain to both the AWS CDK version and the Terraform version of this solution, such as sections on connection options, specialized knowledge, security, troubleshooting, FAQ, customer responsibility, feedback, and notices.

Requirements

Name Version
terraform >= 1.1
aws >= 3.73.0
awscc >= 0.21.0
tls >= 3.3.0

Providers

Name Version
aws >= 3.73.0
tls >= 3.3.0

Modules

Name Source Version
amh ./modules/ec2 n/a
amh_functional_role ./modules/iam/role n/a
database ./modules/database n/a
sg_amh ./modules/sg n/a
sg_rds ./modules/sg n/a

Resources

Name Type
aws_key_pair.generated_key resource
aws_kms_key.amh resource
aws_kms_key.database resource
tls_private_key.example resource
aws_ami.rhel data source
aws_region.current data source

Inputs

Name Description Type Default Required
amh_subnet_ids List of subnet IDs for the AMH EC2 instances.
map(object({
subnet_id = string
}))
n/a yes
database_subnet_ids List of subnet IDs for the RDS database. list(string) n/a yes
amh_kms_key Amazon Resource Name (ARN) to the key that's used for encrypting AMH instance volumes. string null no
database_kms_key ARN to the key that's used for encrypting the RDS database. string null no
key_name Name of the SSH (Secure Shell) key. string "swift" no
secrets_key ARN to the key that's used for Secrets Manager. string null no
vpc_id ID of the target VPC. string "" no
workstation_ip_range Range of IP addresses for administrator workstations. string "10.1.0.0/16" no

Outputs

No outputs.

terraform-aws-swift-digital-connectivity's People

Contributors

andrew-glenn avatar henrylsu avatar marciarieferjohnston avatar tlindsay42 avatar troy-ameigh avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform-aws-swift-digital-connectivity's Issues

move all secret creating values outside of module

We do not know if users are encrypting their statefile, therefore we need to assume they are not. We typically move all resources that generate secret values and insert into state outside of the module, provide instructions on how create as pre-work, then pass relevant values to the module

TLS key -> move out of module and instruct users

secret keys -> provide them with AWS cli command to stuff into secrets manager then have DB refrence the secrets manager entry

https://github.com/aws-ia/terraform-swift-digital-connectivity/blob/90616d3aa2a442a559ef01654fb2d36b58dabd2e/modules/database/main.tf#L6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.