Merge pull request #408 from GSA/switch-to-fips

Switch to using FIPS-enabled endpoints
This commit is contained in:
Steven Reilly
2023-08-14 15:59:27 -04:00
committed by GitHub
8 changed files with 59 additions and 21 deletions

View File

@@ -2,6 +2,8 @@ import botocore
from boto3 import Session
from flask import current_app
from app.clients import AWS_CLIENT_CONFIG
FILE_LOCATION_STRUCTURE = 'service-{}-notify/{}.csv'
@@ -15,8 +17,12 @@ def get_s3_file(
def get_s3_object(
bucket_name, file_location, access_key, secret_key, region
):
session = Session(aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name=region)
s3 = session.resource('s3')
session = Session(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
region_name=region
)
s3 = session.resource('s3', config=AWS_CLIENT_CONFIG)
return s3.Object(bucket_name, file_location)

View File

@@ -1,3 +1,19 @@
from botocore.config import Config
AWS_CLIENT_CONFIG = Config(
# This config is required to enable S3 to connect to FIPS-enabled
# endpoints. See https://aws.amazon.com/compliance/fips/ for more
# information.
s3={
'addressing_style': 'virtual',
},
use_fips_endpoint=True
)
STATISTICS_REQUESTED = 'requested'
STATISTICS_DELIVERED = 'delivered'
STATISTICS_FAILURE = 'failure'
class ClientException(Exception):
'''
Base Exceptions for sending notifications that fail
@@ -12,11 +28,6 @@ class Client(object):
pass
STATISTICS_REQUESTED = 'requested'
STATISTICS_DELIVERED = 'delivered'
STATISTICS_FAILURE = 'failure'
class NotificationProviderClients(object):
sms_clients = {}
email_clients = {}

View File

@@ -4,7 +4,7 @@ import time
from boto3 import client
from app.clients import Client
from app.clients import AWS_CLIENT_CONFIG, Client
from app.cloudfoundry_config import cloud_config
@@ -18,7 +18,8 @@ class AwsCloudwatchClient(Client):
"logs",
region_name=cloud_config.sns_region,
aws_access_key_id=cloud_config.sns_access_key,
aws_secret_access_key=cloud_config.sns_secret_key
aws_secret_access_key=cloud_config.sns_secret_key,
config=AWS_CLIENT_CONFIG
)
super(Client, self).__init__(*args, **kwargs)
self.current_app = current_app

View File

@@ -4,7 +4,11 @@ import botocore
from boto3 import client
from flask import current_app
from app.clients import STATISTICS_DELIVERED, STATISTICS_FAILURE
from app.clients import (
AWS_CLIENT_CONFIG,
STATISTICS_DELIVERED,
STATISTICS_FAILURE,
)
from app.clients.email import (
EmailClient,
EmailClientException,
@@ -62,7 +66,8 @@ class AwsSesClient(EmailClient):
'ses',
region_name=cloud_config.ses_region,
aws_access_key_id=cloud_config.ses_access_key,
aws_secret_access_key=cloud_config.ses_secret_key
aws_secret_access_key=cloud_config.ses_secret_key,
config=AWS_CLIENT_CONFIG
)
super(AwsSesClient, self).__init__(*args, **kwargs)

View File

@@ -5,6 +5,7 @@ import botocore
import phonenumbers
from boto3 import client
from app.clients import AWS_CLIENT_CONFIG
from app.clients.sms import SmsClient
from app.cloudfoundry_config import cloud_config
@@ -19,7 +20,8 @@ class AwsSnsClient(SmsClient):
"sns",
region_name=cloud_config.sns_region,
aws_access_key_id=cloud_config.sns_access_key,
aws_secret_access_key=cloud_config.sns_secret_key
aws_secret_access_key=cloud_config.sns_secret_key,
config=AWS_CLIENT_CONFIG
)
super(SmsClient, self).__init__(*args, **kwargs)
self.current_app = current_app

View File

@@ -1,5 +1,10 @@
monitoring.us-west-2.amazonaws.com
email.us-west-2.amazonaws.com
sns.us-east-1.amazonaws.com
logs-fips.us-east-1.amazonaws.com
monitoring-fips.us-west-2.amazonaws.com
email-fips.us-west-2.amazonaws.com
s3-fips.us-east-1.amazonaws.com
s3-fips.us-east-2.amazonaws.com
s3-fips.us-west-1.amazonaws.com
s3-fips.us-west-2.amazonaws.com
sns-fips.us-east-1.amazonaws.com
gov-collector.newrelic.com
egress-proxy-notify-api-demo.apps.internal

View File

@@ -1,5 +1,9 @@
monitoring.us-west-2.amazonaws.com
email.us-gov-west-1.amazonaws.com
logs.us-gov-west-1.amazonaws.com
monitoring-fips.us-west-2.amazonaws.com
monitoring.us-gov-west-1.amazonaws.com
email-fips.us-gov-west-1.amazonaws.com
s3-fips.us-gov-east-1.amazonaws.com
s3-fips.us-gov-west-1.amazonaws.com
sns.us-gov-west-1.amazonaws.com
gov-collector.newrelic.com
egress-proxy-notify-api-production.apps.internal

View File

@@ -1,6 +1,10 @@
logs.us-west-2.amazonaws.com
monitoring.us-west-2.amazonaws.com
email.us-west-2.amazonaws.com
sns.us-west-2.amazonaws.com
logs-fips.us-west-2.amazonaws.com
monitoring-fips.us-west-2.amazonaws.com
email-fips.us-west-2.amazonaws.com
s3-fips.us-east-1.amazonaws.com
s3-fips.us-east-2.amazonaws.com
s3-fips.us-west-1.amazonaws.com
s3-fips.us-west-2.amazonaws.com
sns-fips.us-west-2.amazonaws.com
gov-collector.newrelic.com
egress-proxy-notify-api-staging.apps.internal