In Terraform's S3 backend, the correct attribute to enable server-side encryption with AWS-managed keys is encrypt = true. The attribute server_side_encryption is not valid for the S3 backend configuration. The attribute sse_algorithm does not exist. Setting server_side_encryption to true is invalid because it expects a boolean.
The S3 backend with server-side encryption enabled ensures state files are encrypted at rest. Using DynamoDB for state locking prevents concurrent modifications. Local backend depends on your laptop's security and is not suitable for team access. HTTP backend requires custom setup and is less secure. Terraform Cloud encrypts state at rest by default but may require paid plans for team features.
Disabling server-side encryption on the bucket means new objects uploaded will not be encrypted unless specified. Existing objects remain encrypted until overwritten. Terraform will not refuse writes due to encryption settings. S3 does not automatically encrypt objects if encryption is disabled.
If the customer-managed KMS key is disabled, Terraform cannot decrypt existing state files or encrypt new ones. This causes read and write operations to fail. Terraform does not automatically switch keys.
Best practice is to restrict KMS key usage to specific IAM roles in each account that need access, and similarly restrict S3 bucket permissions. This enforces least privilege and maintains encryption at rest. Sharing full access or disabling encryption weakens security. Replicating state files increases complexity and risk.