diff --git a/checks/check_extra727 b/checks/check_extra727 index 0be47f2c25f..ab8e4daf67c 100644 --- a/checks/check_extra727 +++ b/checks/check_extra727 @@ -18,6 +18,45 @@ CHECK_TYPE_extra727="EXTRA" CHECK_ALTERNATE_check727="extra727" extra727(){ + for regx in $REGIONS; do + LIST_SQS=$($AWSCLI sqs list-queues $PROFILE_OPT --region $regx --query QueueUrls --output text |grep -v ^None) + if [[ $LIST_SQS ]]; then + for queue in $LIST_SQS; do + SQS_POLICY=$($AWSCLI sqs get-queue-attributes --queue-url $queue $PROFILE_OPT --region $regx --attribute-names All --query Attributes.Policy --output text) + if [[ "$SQS_POLICY" != "None" ]]; then + SQS_POLICY_ALLOW_ALL=$($AWSCLI sqs get-queue-attributes --queue-url $queue $PROFILE_OPT --region $regx --attribute-names All --query Attributes \ + | jq '.Policy | fromjson' | jq '.Statement[] | select(.Effect=="Allow") | select(.Principal=="*" or .Principal.AWS=="*" or .Principal.CanonicalUser=="*")') + if [[ $SQS_POLICY_ALLOW_ALL ]]; then + SQS_POLICY_ALLOW_ALL_WITHOUT_CONDITION=$($AWSCLI sqs get-queue-attributes --queue-url $queue $PROFILE_OPT --region $regx --attribute-names All --query Attributes \ + | jq '.Policy | fromjson' | jq '.Statement[] | select(.Effect=="Allow") | select(.Principal=="*" or .Principal.AWS=="*" or .Principal.CanonicalUser=="*") | select(has("Condition") | not)') + if [[ $SQS_POLICY_ALLOW_ALL_WITHOUT_CONDITION ]]; then + SQS_POLICY_ALLOW_ALL_WITHOUT_CONDITION_DETAILS=$($AWSCLI sqs get-queue-attributes --queue-url $queue $PROFILE_OPT --region $regx --attribute-names All --query Attributes \ + | jq '.Policy | fromjson' | jq '.Statement[] | select(.Effect=="Allow") | select(.Principal=="*" or .Principal.AWS=="*" or .Principal.CanonicalUser=="*") | select(has("Condition") | not)' | jq '"[Principal: " + (.Principal|tostring) + " Action: " + .Action + "]"' ) + textFail "$regx: SQS $queue queue policy with public access: $SQS_POLICY_ALLOW_ALL_WITHOUT_CONDITION_DETAILS" "$regx" + else + textInfo "$regx: SQS $queue queue policy with public access but has a Condition" "$regx" + fi + else + textPass "$regx: SQS $queue queue without public access" "$regx" + fi + else + textPass "$regx: SQS $queue queue without policy" "$regx" + fi + done + else + textInfo "$regx: No SQS queues found" "$regx" + fi + done + + + + + + + + + + for regx in $REGIONS; do LIST_SQS=$($AWSCLI sqs list-queues $PROFILE_OPT --region $regx --query QueueUrls --output text |grep -v ^None) if [[ $LIST_SQS ]]; then