IAM and RBAC Requirements for Multi-Cloud Deployment
Last Updated: 2025-11-02 Applies To: GCP GKE, AWS EKS, Azure AKS Purpose: Comprehensive IAM/RBAC permissions required for CI/CD deploymentsOverview
This document defines all required IAM roles, permissions, and RBAC policies needed to deploy MCP Server LangGraph to Kubernetes across all three major cloud providers.Principle: Least Privilege
All permissions follow the principle of least privilege - granting only the minimum permissions necessary for each operation.GCP (Google Kubernetes Engine)
Service Account: mcp-staging-sa@PROJECT_ID.iam.gserviceaccount.com
Required IAM Roles
Grant Commands
Workload Identity Federation (GitHub Actions)
Pool:github-actions-pool
Provider: github-provider
Kubernetes RBAC (In-Cluster)
Service Account:mcp-server-langgraph (in namespace)
Verification
AWS (Elastic Kubernetes Service)
IAM Role: mcp-eks-deployment-role
Required IAM Policies
Custom IAM Policy: ECR Access
Custom IAM Policy: EKS Deployment
IRSA (IAM Roles for Service Accounts)
Service Account Annotation:Grant Commands (AWS CLI)
Azure (Azure Kubernetes Service)
Service Principal / Managed Identity: mcp-aks-sp
Required Azure RBAC Roles
Grant Commands (Azure CLI)
Workload Identity (Azure AD Pod Identity)
Pod Identity:Kubernetes RBAC (Common to All Platforms)
Namespace-Level Permissions
ServiceAccount
Role
RoleBinding
CI/CD Service Account Permissions
GitHub Actions (All Platforms)
Required Permissions:- Pull from source repository - GitHub token (automatic)
- Authenticate to cloud provider - Workload Identity Federation / OIDC
- Push container images - Container registry write access
- Deploy to Kubernetes - Cluster access with deployment permissions
Deployment Pipeline Permissions
Validation Scripts
GCP Validation
AWS Validation
Azure Validation
Troubleshooting
Common Permission Errors
GCP: “Permission denied on Artifact Registry”
Error:AWS: “AccessDenied ECR”
Error:Azure: “Authorization failed for ACR”
Error:Security Best Practices
1. Use Workload Identity / IRSA
- ✅ Do: Use platform-native workload identity (GCP Workload Identity, AWS IRSA, Azure Pod Identity)
- ❌ Don’t: Use long-lived service account keys
2. Principle of Least Privilege
- ✅ Do: Grant only required permissions
- ❌ Don’t: Grant
Owner,Editor, orAdminroles
3. Scope Permissions Narrowly
- ✅ Do: Scope to specific resources (namespace, resource group, etc.)
- ❌ Don’t: Grant organization-wide or subscription-wide permissions
4. Regular Audits
- ✅ Do: Regularly review and audit permissions
- ❌ Don’t: Set-and-forget permissions
5. Use Resource-Level Permissions
- ✅ Do: Grant access to specific container registries, clusters
- ❌ Don’t: Grant wildcard (*) resource access
References
Documentation
- GCP: GCP Configuration Guide
- AWS: AWS EKS Configuration (see scripts and Terraform modules below)
- Azure: Azure AKS Configuration (see scripts and Terraform modules below)
AWS EKS and Azure AKS deployment documentation is available via deployment scripts and Terraform modules. Dedicated configuration guides are planned for future releases.
Scripts
- GCP Setup:
scripts/gcp/setup-staging-infrastructure.sh - AWS Setup:
scripts/deploy-aws-eks.sh - Azure Setup:
scripts/deploy-azure-aks.sh
Terraform Modules
- GCP:
terraform/modules/gke/ - AWS:
terraform/modules/eks/ - Azure:
terraform/modules/aks/
Maintained By: DevOps Team Last Reviewed: 2025-11-02 Next Review: 2025-12-01