Shared Responsibility Model

Security, Compliance and Operations is a shared responsibility between the platform team and the development teams.

This shared model can help relieve the developer's operational burden as the platform team takes over the responsibility for the basic infrastructure components, while the development teams assume responsibility and management on top of it.

See also the AWS Shared Responsibility Model for more background information.

The purpose of the document is to both inform teams on the available services and to ensure that no necessary activities fall through the gaps while maximizing team autonomy.

In most cases, a service responsibility model table is provided for each service. The "Component" column indicates the area of responsibility, the "Responsible" column indicates which team is ultimately responsible and the "Platform Support" indicates the teams that assist the responsible team.

PostgreSQL

PostgreSQL is provided as infrastructure self-service via our tf-mod-aws-aurora. The somebody team provides various services over and above a base PostgreSQL database, however there are still several components that application teams are responsible for.

ComponentResponsiblePlatform Support
Query optimizationTeam
Index managementTeam
Schema managementTeam
Connection poolingTeamSomebody
RecoveryTeamSomebody
User managementTeamSomebody
Backup verificationTeam
BackupsSomebody
Auto-scaling db serverTeamSomebody
Major version updatesTeamSomebody
DB to K8s network connectivitySomebody
DB serverSomebody
OSSomebody

Redis

Redis is provided as infrastructure self-service via our tf-mod-aws-redis.

ComponentResponsiblePlatform Support
Redis to K8s network connectivitySomebody
OSSomebody
Major version upgradesTeamSomebody
Core Redis clusterSomebody
Cluster scaling/sizingTeamSomebody
Backup scheduling/restoreTeamSomebody

Elasticsearch

Elasticsearch is provided as infrastructure self-service via our tf-mod-aws-elasticsearch.

ComponentResponsiblePlatform Support
Maintaining Terraform ModuleSomebody
Network connectivity between EKS and ElasticsearchSomebody
Scaling / SizingTeam
UpdatingTeam
Backup infrastructureSomebody
Backup schedulingTeam
Backup restoreTeam

Kubernetes

The Somebody team provides a core Kubernetes cluster as a service. For more information see the Kubernetes section.

ComponentResponsiblePlatform Support
App namespace user/RBAC managementTeamSomebody
Application K8s Namespaced ObjectsTeam
Cluster backup/recovery (etcd)Somebody
Cluster wide user/RBAC managementSomebody
Horizontal/vertical pod auto-scalingTeam
Nodes (including auto-scaling)Somebody
OSSomebody
Somebody Provided ServicesSomebody

Kubernetes IAM Integration: IAM Roles for Service account (IRSA)

IRSA is used to specify AWS IAM permissions on a per pod basis.

ComponentResponsiblePlatform Support
Attaching roles to pod's Service Account via annotationsTeam
Ensuring pods have minimal required IAM permissionsTeam
Defining IAM policies and roles for pod consumptionTeam
Platform Helm Chart Service Account to Pod bindingSomebody
Setting up IRSA in the EKS ClusterSomebody

Image security

It is important that images are scanned and patched for security vulnerabilities to prevent exploits that could serve as an entry point for attackers.

ComponentResponsiblePlatform Support
Application imagesTeamSomebody
SB Provided ServicesSomebody
Kubernetes NodesSomebody

Log Aggregation

Log aggregation is provided for Kubernetes clusters via an EFK (Elastic, Filebeat, Kibana) Stack service (Elastic-Stack).

ComponentResponsiblePlatform Support
Index managementTeam
Kibana dashboardsTeam
User rights permissionsTeam
All other Filebeat configuration (e.g. processors)Team
Filebeat log shipping configurationSomebody
EFK upgradesSomebody
Filebeat agentsSomebody
Elasticsearch/Kibana nodesSomebody

RBAC

The two key areas for authentication & authorization are AWS resources and Kubernetes resources. AWS IAM roles are used for both authentication and authorization for AWS resources. For Kubernetes resources, AWS IAM roles are used only for authentication and RBAC is used for authorization.

ComponentResponsiblePlatform support
Revoking team members' permissions to AWS or Kubernetes resourcesTeamSomebody
Granting team members' permissions to AWS or Kubernetes resourcesTeamSomebody
Defining IAM policies and K8s rolesTeamSomebody