Setting Up a Cloud Connected Panther Instance
Using the panther-cloud-connected-setup CLI tool
Overview
To provision a Cloud Connected Panther instance, you will use the panther-cloud-connected-setup
CLI tool, in addition to taking manual steps. Read about the tool below, then begin the setup process.
The panther-cloud-connected-setup tool (Beta)
Part of setting up a Cloud Connected Panther instance is running the panther-cloud-connected-setup
CLI tool. The tool performs all its operations from your local machine or within your AWS or Snowflake accounts, and does not share any credentials or information with Panther.
What the tool does
Running this tool:
Within your AWS account:
Deploys the
PantherDeploymentRole
IAM roleDeploys and executes the
PantherReadinessCheck
pre-deployment tool, which verifies that you are unlikely to encounter deployment issuesRegisters for SSL certificates for the following subdomains, based on the root domain you provide:
<desired panther subdomain>.yourdomain.com
*.<desired panther subdomain>.yourdomain.com
Provisions Snowflake credentials in your AWS environment, using:
(Recommended) A Snowflake account and user named
pantheraccountadmin
Panther creates on your behalf(Not recommended) An already created (empty) Snowflake account and
pantheraccountadmin
user you provide, created according to the instructions below. This path may appeal to you if you're unable to allow thepanther-cloud-connected-setup
tool to use a Snowflake user with the GLOBALORGADMIN role. (This user's credentials are never shared with Panther.)
How the tool stores state
The panther-cloud-connected-setup
tool stores state in the panther-cli-state.db
file. If the tool does not successfully provision a Panther instance on first run, this file makes re-runs simpler, as it tracks the steps that have already been successfully completed.
This file stores sensitive information. After successfully provisioning a Panther instance, it's recommended to run ./panther-cloud-connected-setup --clean
to purge the file, or delete the file from the disk.
How to set up a Cloud Connected Panther instance
Prerequisites
Snowflake prerequisites
You have a Snowflake organization.
(To have the
panther-cloud-connected-setup
tool provision a Snowflake account and user for you, which is recommended) You have a Snowflake user that:Has the GLOBALORGADMIN role attached.
The Snowflake documentation notes that the ORGADMIN role will be eliminated. Before that happens, you may use a user with the ORGADMIN role instead of GLOBALORGADMIN.
Uses RSA key-pair authentication. If you need to set up an RSA key-pair, follow the Snowflake Configuring key-pair authentication instructions.
Has matching values for
NAME
andLOGIN_NAME
. To verify this, run the following command in a Snowflake worksheet:
(If you will provide an already created Snowflake account and user, which is not recommended) You have an empty Snowflake account and
pantheraccountadmin
user created according to the instructions below.Certain Panther features require Snowflake Enterprise or higher. Learn more here.
AWS prerequisites
You have an AWS organization.
You are able to provide user credentials (i.e., an access key ID and secret access key), optionally with a session token, for either:
(Recommended) The AWS account root user (or a different IAM user with comparable permissions).
An IAM user with at least the following permissions:
Ability to deploy CloudFormation templates
Ability to create certificates in AWS Certificate Manager (ACM)
Ability to create and invoke Lambdas
Ability to read/write to Secrets Manager
Other prerequisites
You have a custom domain registered.
If you need help registering a custom domain and would like to use AWS as your domain registrar, follow this Amazon Route 53 documentation.
Step 1: Create a new AWS account
In your AWS organization, create a new account, if needed. (It is also possible to use an existing empty one.)
Your Panther instance cannot be deployed in an AWS account with existing resources.
Step 2: Request values from Panther
Reach out to Panther support to notify them you are deploying a Cloud Connected instance and ask for values for
CloudFormationConfig.IdentityAccountId
andCloudFormationConfig.OpsAccountId
. You will use these values in Step 3.
Step 3: Fill out the configuration file
Create a configuration file locally by copying one of the following templates:
If the
panther-cloud-connected-setup
tool should provision a Snowflake account and user for you: example-config-new-snowflake-acct.ymlIf you will provide an already created, empty Snowflake account and
pantheraccountadmin
user: example-config-existing-snowflake-acct.yml
Update the keys' values, following the guidance in the template and taking note of the below:
When entering a value for
PantherAccountConfig.Region
, use one of the supported AWS Panther regions. This region is where your Panther instance will be deployed.(If you are using example-config-new-snowflake-acct.yml) When entering a value for
SnowflakeConfig.NewAccountConfig.SnowflakeEdition
, take note that certain Panther features require Snowflake Enterprise or higher. Learn more here.
Step 4: Run the panther-cloud-connected-setup tool
Run the tool with the following command:
Additional flags that may be useful:
--verbose
: Print verbose logging--snowflake-logging
: Print verbose Snowflake logging
Step 5: Provide outputted file Panther
A successful run of the tool will output a file with account information. Provide this file to Panther support.
Stop here, and wait for Panther to notify you that you may continue.
Step 6: Create CNAME records
In your AWS console, navigate to the EC2 service.
Locate the AWS-provided DNS name for your
web
load balancer:Navigate to Route53 (or a different DNS service of your choice).
Create a new CNAME record that points your primary subdomain (
<your_desired_Panther_subdomain>.<company_name>.com
) to this DNS name for yourweb
load balancer.
In EC2, locate the AWS-provided DNS name for the
http-ingest-alb
load balancer:Navigate to Route53 (or a different DNS service of your choice).
Create a new CNAME record that points your logs subdomain (
logs.<your_desired_Panther_subdomain>.<company_name>.com
) to this DNS name for yourhttp-ingest-alb
load balancer.
In your AWS console, navigate to the API Gateway service.
Click APIs > Custom domain names.
Click the name of the API subdomain (
api.<your_desired_Panther_subdomain>.<company_name>.com
).Navigate to Route53 (or a different DNS service of your choice).
Create a new CNAME record that points your API subdomain (
api.<your_desired_Panther_subdomain>.<company_name>.com
) to this API Gateway domain name value.
(Optional) Validate the three CNAME records you just created:
To validate that the primary endpoint is working:
In a web browser, navigate to your primary subdomain.
Log in to your Panther Console.
To validate that the HTTP ingest endpoint is working:
To validate that the API endpoint is working, make a call using the Panther Analysis Tool (PAT):
Execute the following
check-connection
command:pipenv run panther_analysis_tool check-connection --api-host $YOUR_GRAPHQL_ENDPOINT --api-token $YOUR_TOKEN
Step 7: Request API Gateway and CodeBuild quota increases
Follow this AWS documentation to request the following quota increases:
API Gateway throttle quota: Set at 20,000
Concurrently running builds for ARM/Large environment (or
ARM BUILD_GENERAL1_LARGE
): Set at 2 or moreConcurrently running builds for Linux/Large environment (or
Linux BUILD_GENERAL1_LARGE
): Set at 2 or more
Panther automatically submits a request for your Lambda concurrent executions quota to be increased to 2,000.
Post-setup recommendations
Step 1 (recommended): Activate Panther-defined tags on AWS resources
Panther defines these tags on the AWS resources created for your Panther deployment. Follow this AWS documentation to activate these tags.
Step 2 (optional): Provide Panther your custom tags for AWS resources
In addition to the Panther-defined tags, you may wish to add your own custom tags on the AWS resources created for your Panther deployment. To do so, reach out to your Panther support team with the list of tag keys and values.
Step 3: Review Snowflake configuration recommendations for optimal query performance
Last updated
Was this helpful?