Security Hub controls for Amazon SQS
These AWS Security Hub controls evaluate the Amazon Simple Queue Service (Amazon SQS) service and resources.
These controls may not be available in all AWS Regions. For more information, see Availability of controls by Region.
[SQS.1] Amazon SQS queues should be encrypted at rest
Related requirements: NIST.800-53.r5 CA-9(1), NIST.800-53.r5 CM-3(6), NIST.800-53.r5 SC-13, NIST.800-53.r5 SC-28, NIST.800-53.r5 SC-28(1), NIST.800-53.r5 SC-7(10), NIST.800-53.r5 SI-7(6)
Category: Protect > Data Protection > Encryption of data-at-rest
Severity: Medium
Resource type:
AWS::SQS::Queue
AWS Config rule:
sqs-queue-encrypted
(custom Security Hub rule)
Schedule type: Change triggered
Parameters: None
This control checks whether an Amazon SQS queue is encrypted at rest. The control fails if the queue isn't encrypted with an SQS-managed key (SSE-SQS) or an AWS Key Management Service (AWS KMS) key (SSE-KMS).
Encrypting data at rest reduces the risk of an unauthorized user accessing data stored on disk. Server-side encryption (SSE) protects the contents of messages in SQS queues using SQS-managed encryption keys (SSE-SQS) or AWS KMS keys (SSE-KMS).
Remediation
To configure SSE for an SQS queue, see Configuring server-side encryption (SSE) for a queue (console) in the Amazon Simple Queue Service Developer Guide.
[SQS.2] SQS queues should be tagged
Category: Identify > Inventory > Tagging
Severity: Low
Resource type:
AWS::SQS::Queue
AWS Config rule: tagged-sqs-queue
(custom Security Hub rule)
Schedule type: Change triggered
Parameters:
Parameter | Description | Type | Allowed custom values | Security Hub default value |
---|---|---|---|---|
requiredTagKeys
|
List of non-system tag keys that the evaluated resource must contain. Tag keys are case sensitive. | StringList | List of tags that meet AWS requirements |
No default value
|
This control checks whether an Amazon SQS queue has tags with the specific keys defined in the parameter
requiredTagKeys
. The control fails if the queue doesn’t have any tag keys or if it doesn’t have all the keys specified in the
parameter requiredTagKeys
. If the parameter requiredTagKeys
isn't provided, the control only checks for the existence
of a tag key and fails if the queue isn't tagged with any key. System tags, which are automatically applied and begin with aws:
,
are ignored.
A tag is a label that you assign to an AWS resource, and it consists of a key and an optional value. You can create tags to categorize resources by purpose, owner, environment, or other criteria. Tags can help you identify, organize, search for, and filter resources. Tagging also helps you track accountable resource owners for actions and notifications. When you use tagging, you can implement attribute-based access control (ABAC) as an authorization strategy, which defines permissions based on tags. You can attach tags to IAM entities (users or roles) and to AWS resources. You can create a single ABAC policy or a separate set of policies for your IAM principals. You can design these ABAC policies to allow operations when the principal's tag matches the resource tag. For more information, see What is ABAC for AWS? in the IAM User Guide.
Note
Don’t add personally identifiable information (PII) or other confidential or sensitive information in tags. Tags are accessible to many AWS services, including AWS Billing. For more tagging best practices, see Tagging your AWS resources in the AWS General Reference.
Remediation
To add tags to an existing queue using the Amazon SQS console, see Configuring cost allocation tags for an Amazon SQS queue (console) in the Amazon Simple Queue Service Developer Guide.
[SQS.3] SQS queue access policies should not allow public access
Category: Protect > Secure access management > Resource not publicly accessible
Severity: High
Resource type:
AWS::SQS::Queue
AWS Config rule: sqs-queue-no-public-access
Schedule type: Change triggered
Parameters: None
This controls checks whether an Amazon SQS access policy allows public access to an SQS queue. The control fails if an SQS access policy allows public access to the queue.
An Amazon SQS access policy can allow public access to an SQS queue, which might allow an
anonymous user or any authenticated AWS IAM identity to access the queue. SQS access
policies typically provide this access by specifying the wildcard character (*
) in the
Principal
element of the policy, not using proper conditions to restrict access to the
queue, or both. If an SQS access policy allows public access, third parties might be
able to perform tasks such as receive messages from the queue, send messages to the
queue, or modify the access policy for the queue. This could result in events such as
data exfiltration, a denial of service, or injection of messages into the queue by a
threat actor.
Remediation
For information about configuring the SQS access policy for an SQS queue, see Using custom policies with the Amazon SQS Access Policy Language in the Amazon Simple Queue Service Developer Guide.