for Self-Service o AWS Cloud automation platform (Jenkins+Terraform) – Tech Stack and Architecture o Branching Strategy for Multi-Accounts-Environments o GitOps Practices o Guardrails
(Small) Cloud Operations Team To ease (repetitive) cloud infrastructure requests To shift focus from provisioning the infra to develop the modules/standards Who want to Self Service To be able to self serve Infrastructure requests without waiting for Platform/Cloud Team to provisioning and without knowing terraform extensively. Collaboration with Other Teams SecOps/SRE or other team who want to automate their scope of work along with the Cloud Infrastructure provisioning? Security/Networking Policies and standards which required to fulfill the Developer(SDCL) needs
and enforce organization-wide cloud policies and standards in a way that allows us to be flexible, without exposing us to unacceptable levels of organizational risk? How do we manage and mitigate security and regulatory compliance risks while ensuring confidentiality, integrity and availability in Public cloud? How do we Boost Business Agility to get SDLC/Developer productivity using Public Cloud ?
Can all traffic transfer over private and Secured network links ? Can we block ingress and egress access? What is the tenancy model and are segregated user-space available? Data Protection Artifact Management Auditability Can we encrypt all the data in-transit and at- rest? Does the service support encryption with KMS Customer Managed Keys (CMK) Is all the access compliant with our corporate authentication standards? Can all user interfaces integrate with our Active Directory? How do we authorise access to all resources? Can we limit access to data and code and by role and job function? How do we safely and securely persist and protect the code and model artifacts? How do we maintain integrity of the artifacts and environment consistency? Does the service provide end-to-end auditability? Can audit trails be captured at user and file/object level?
Scaling group File system File system Amazon Elastic File System (Amazon EFS) Application Load Balancer https Jenkins domain Amazon Route 53 AWS ACM High Level Architecture AWS CodeCommit AWS SNS AWS SQS AWS IAM Jenkins AWS KMS AWS Secrets Manager 1. AWS EC2 for Orchestrator (Jenkins) 2. AWS S3 and DynamoDB for Terraform Remote State & Session Lock management 3. ALB to expose the Jenkins url 4. IAM roles for STS Access 5. Code Commit for source code 6. SNS and SQS for webhook 7. Secrets Manager for Jenkins credentials and api keys 8. ACM for TLS termination at ALB 9. EFS for Multi-AZ deployment of Jenkins (Optional) 10. KMS for encryption at-rest Details of the services and use case VPC
- Use git-tags for releasing Terraform Modules with Handle environments separately - Use workspaces for environments (ie. dev, test, prod A change is reviewed and merged with a pull request Have a rollback plan Protect the “master/<env>” branch Build Reusable Patterns and Reference Architectures
Before that, the Terraform plan is reviewed manually and approved. Follow the same procedure to promote changes from staging to the production environment. Use Assume Role (STS) to deploy AWS Resources in the target environments Have a manual approval step of Terraform Pipeline/Workflow Build a multi-stage pipeline and maintain a Separate pipeline for each environment Make sure that the backend infrastructure has enough protection. State files will contain all sensitive information that goes through Terraform (keys, secrets, generated passwords etc.)