Skip to content

Commit 8338399

Browse files
authored
Merge 01e454b into d6b1d71
2 parents d6b1d71 + 01e454b commit 8338399

28 files changed

+333
-365
lines changed

.github/workflows/keyfactor-bootstrap-workflow.yml renamed to .github/workflows/keyfactor-starter-workflow.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Keyfactor Bootstrap Workflow
1+
name: Keyfactor Bootstrap Workflow
22

33
on:
44
workflow_dispatch:
@@ -11,9 +11,10 @@ on:
1111

1212
jobs:
1313
call-starter-workflow:
14-
uses: keyfactor/actions/.github/workflows/starter.yml@v2
14+
uses: keyfactor/actions/.github/workflows/starter.yml@3.1.2
1515
secrets:
1616
token: ${{ secrets.V2BUILDTOKEN}}
1717
APPROVE_README_PUSH: ${{ secrets.APPROVE_README_PUSH}}
1818
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }}
1919
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }}
20+
scan_token: ${{ secrets.SAST_TOKEN }}

Images/CertStore-1.gif

-15.4 KB
Binary file not shown.

Images/CertStore-IAM.gif

-79.1 KB
Binary file not shown.

Images/CertStore2.gif

-21.2 KB
Binary file not shown.

Images/CertStoreCredentials.gif

-18.9 KB
Binary file not shown.

Images/CertStoreType-Advanced.gif

-14.9 KB
Binary file not shown.

Images/CertStoreType-Basic-IAM.gif

-93.3 KB
Binary file not shown.

Images/CertStoreType-Basic-Okta.gif

-17.7 KB
Binary file not shown.
-123 KB
Binary file not shown.
-18.5 KB
Binary file not shown.

Images/CertStoreType-EntryParams.gif

-26.4 KB
Binary file not shown.

README.md

Lines changed: 183 additions & 300 deletions
Large diffs are not rendered by default.

aws-orchestrator-core/aws-orchestrator-core.csproj

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp3.1</TargetFramework>
5-
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
4+
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
5+
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
6+
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
7+
<ImplicitUsings>disable</ImplicitUsings>
68
<RootNamespace>Keyfactor.AnyAgent.AwsCertificateManager</RootNamespace>
79
<AssemblyName>Keyfactor.AnyAgent.AwsCertificateManager</AssemblyName>
810
</PropertyGroup>
9-
10-
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
11-
<Exec Command="echo F | xcopy &quot;$(SolutionDir)sample-manifest.json&quot; &quot;$(TargetDir)\manifest.json&quot; /Y" />
12-
</Target>
1311

1412
<ItemGroup>
1513
<PackageReference Include="AWSSDK.CertificateManager" Version="3.7.101.21" />
@@ -27,6 +25,10 @@
2725
<PackageReference Include="RestSharp" Version="106.13.0" />
2826
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
2927
<PackageReference Include="System.Drawing.Common" Version="5.0.3" />
28+
29+
<None Update="manifest.json">
30+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
31+
</None>
3032
</ItemGroup>
3133

3234
</Project>
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

docsource/aws-acm.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
## Overview
2+
3+
TODO Overview is a required section
4+
5+
## Requirements
6+
7+
TODO Requirements is an optional section. If this section doesn't seem necessary on initial glance, please delete it. Refer to the docs on [Confluence](https://keyfactor.atlassian.net/wiki/x/SAAyHg) for more info
8+
9+
## Discovery Job Configuration
10+
11+
TODO Discovery Job Configuration is an optional section. If this section doesn't seem necessary on initial glance, please delete it. Refer to the docs on [Confluence](https://keyfactor.atlassian.net/wiki/x/SAAyHg) for more info
12+
13+
## Certificate Store Configuration
14+
15+
TODO Certificate Store Configuration is an optional section. If this section doesn't seem necessary on initial glance, please delete it. Refer to the docs on [Confluence](https://keyfactor.atlassian.net/wiki/x/SAAyHg) for more info
16+
17+
## Global Store Type Section
18+
19+
TODO Global Store Type Section is an optional section. If this section doesn't seem necessary on initial glance, please delete it. Refer to the docs on [Confluence](https://keyfactor.atlassian.net/wiki/x/SAAyHg) for more info
20+

docsource/aws-acm.txt

Whitespace-only changes.

docsource/content.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
## Overview
2+
3+
AWS Certificate Manager is a service that lets you easily provision, manage, and deploy public and private Secure Sockets Layer/Transport Layer Security (SSL/TLS) certificates for use with AWS services and your internal connected resources. SSL/TLS certificates are used to secure network communications and establish the identity of websites over the Internet as well as resources on private networks. AWS Certificate Manager removes the time-consuming manual process of purchasing, uploading, and renewing SSL/TLS certificates. The orchestrator supports Okta OAth authentication, as well as AWS IAM accounts. The Okta Support allows authentication against a 3rd party identity provider in AWS. From there you can get temporary credentials for a role that you setup in each AWS Account.
4+
5+
### Documentation
6+
7+
- [Cert Manager API](https://docs.aws.amazon.com/acm/latest/userguide/sdk.html)
8+
- [Aws Region Codes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)
9+
10+
11+
## Requirements
12+
13+
Depending on your choice of authentication providers, choose the appropriate section:
14+
<details>
15+
<summary>AWS Certificate Manager <code>AWS-ACM</code></summary>
16+
17+
### AWS Setup
18+
Options for authenticating:
19+
1. Okta or other OAuth configuration (refer to `AwsCerManO` below)
20+
2. IAM User Auth configuration (refer to `AwsCerManA` below)
21+
3. EC2 Role Auth or other default method supported by the [AWS SDK](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/creds-assign.html)
22+
23+
As one option for #3, to set up Role Auth for an EC2 instance, follow the steps below. Note, this applies specifically __when the orchestrator is running `ACM-AWS` inside of an EC2 instance__. When the option to assume an EC2 role is selected, the Account ID and Role will be assumed using the default credentials supplied in the EC2 instance via the AWS SDK.
24+
1. Assign or note the existing IAM Role assigned to the EC2 instance running
25+
2. Make sure that role has access to ACM
26+
3. When configuring the `AWS-ACM` store, do not select either IAM or OAuth methods in the store's settings. This will make it use the AWS SDK to lookup EC2 credentials.
27+
28+
</details>
29+
30+
<details>
31+
<summary>[Deprecated] AWS Certificate Manager with Okta Auth Configuration <code>AwsCerManO</code></summary>
32+
33+
### AWS Setup
34+
1. A 3rd party [identity provider](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) similar to [this](/Images/AWSIdentityProvider.gif) needs to be setup in AWS for each account.
35+
2. An Aws [Role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) similar to [this](/Images/AWSRole1.gif) needs Added for each AWS account.
36+
3. Ensure the [trust relationship](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) is setup for that role. Should look like [this](/Images/AWSRole2.gif).
37+
38+
### OKTA Setup
39+
1. Ensure your Authorization Server Is Setup in OKTA. Here is a [sample](/Images/OktaSampleAuthorizationServer.gif).
40+
2. Ensure the appropriate scopes are setup in Okta. Here is a [sample](/Images/OktaSampleAuthorizationServer-scopes.gif).
41+
3. Setup an Okta App with similar settings to [this](/Images/OktaApp1.gif) and [this](/Images/OktaApp2.gif).
42+
43+
</details>
44+
45+
<details>
46+
<summary>[Deprecated] AWS Certificate Manager with IAM Auth Configuration <code>AwsCerManA</code></summary>
47+
48+
### AWS Setup
49+
1. An Aws [Role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) Needs Added for the permissions you want to grant, see [sample](/Images/AWSRole1.gif).
50+
2. A [Trust Relationship](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) is setup for that role. Should look like something like [this](/Images/AssumeRoleTrust.gif).
51+
3. AWS does not support programmatic access for AWS SSO accounts. The account used here must be a [standard AWS IAM User](/Images/UserAccount.gif) with an Access Key credential type.
52+
53+
</details>
54+

integration-manifest.json

Lines changed: 65 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,16 @@
44
"name": "AWS Certificate Manager (ACM) Orchestrator",
55
"status": "production",
66
"update_catalog": true,
7-
"link_github": true,
7+
"link_github": true,
88
"release_dir": "aws-orchestrator-core/bin/Release/netcoreapp3.1",
9+
"release_project": "aws-orchestrator-core/aws-orchestrator-core.csproj",
910
"support_level": "kf-supported",
1011
"description": "The AWS ACM Orchestrator supports Inventory and Management of certificates in the AWS Certificate Manager. It supports three methods of authentication: Environmental Credentials loaded via the AWS SDK e.g. inside an EC2 instance; IAM User Credentials for assuming a Role as a specific user; OAuth-based Credentials to authenticate with an OAuth provider to assume a Role.",
1112
"about": {
1213
"orchestrator": {
1314
"UOFramework": "10.1",
1415
"keyfactor_platform_version": "9.10",
1516
"pam_support": true,
16-
"win": {
17-
"supportsCreateStore": false,
18-
"supportsDiscovery": false,
19-
"supportsManagementAdd": true,
20-
"supportsManagementRemove": true,
21-
"supportsReenrollment": false,
22-
"supportsInventory": true,
23-
"platformSupport": "Unused"
24-
},
25-
"linux": {
26-
"supportsCreateStore": false,
27-
"supportsDiscovery": false,
28-
"supportsManagementAdd": true,
29-
"supportsManagementRemove": true,
30-
"supportsReenrollment": false,
31-
"supportsInventory": true,
32-
"platformSupport": "Unused"
33-
},
3417
"store_types": [
3518
{
3619
"Name": "AWS Certificate Manager",
@@ -49,105 +32,121 @@
4932
"Name": "UseEC2AssumeRole",
5033
"DisplayName": "Assume new Account / Role in EC2",
5134
"Type": "Bool",
52-
"DependsOn": null,
35+
"DependsOn": "",
5336
"DefaultValue": "false",
54-
"Required": true
37+
"Required": true,
38+
"IsPAMEligible": false,
39+
"Description": "A switch to enable the store to assume a new Account ID and Role when using EC2 credentials"
5540
},
5641
{
5742
"Name": "UseOAuth",
5843
"DisplayName": "Use OAuth 2.0 Provider",
5944
"Type": "Bool",
60-
"DependsOn": null,
45+
"DependsOn": "",
6146
"DefaultValue": "false",
62-
"Required": true
47+
"Required": true,
48+
"IsPAMEligible": false,
49+
"Description": "A switch to enable the store to use an OAuth provider workflow to authenticate with AWS ACM"
6350
},
6451
{
6552
"Name": "UseIAM",
6653
"DisplayName": "Use IAM User Auth",
6754
"Type": "Bool",
68-
"DependsOn": null,
55+
"DependsOn": "",
6956
"DefaultValue": "false",
70-
"Required": true
57+
"Required": true,
58+
"IsPAMEligible": false,
59+
"Description": "A switch to enable the store to use IAM User auth to assume a role when authenticating with AWS ACM"
7160
},
7261
{
7362
"Name": "EC2AssumeRole",
7463
"DisplayName": "AWS Role to Assume (EC2)",
7564
"Type": "String",
7665
"DependsOn": "UseEC2AssumeRole",
77-
"DefaultValue": null,
78-
"Required": false
66+
"DefaultValue": "",
67+
"Required": false,
68+
"IsPAMEligible": false,
69+
"Description": "The AWS Role to assume using the EC2 instance credentials"
7970
},
8071
{
8172
"Name": "OAuthScope",
8273
"DisplayName": "OAuth Scope",
8374
"Type": "String",
8475
"DependsOn": "UseOAuth",
85-
"DefaultValue": null,
86-
"Required": false
76+
"DefaultValue": "",
77+
"Required": false,
78+
"IsPAMEligible": false,
79+
"Description": "This is the OAuth Scope needed for Okta OAuth, defined in Okta"
8780
},
8881
{
8982
"Name": "OAuthGrantType",
9083
"DisplayName": "OAuth Grant Type",
9184
"Type": "String",
9285
"DependsOn": "UseOAuth",
9386
"DefaultValue": "client_credentials",
94-
"Required": false
87+
"Required": false,
88+
"IsPAMEligible": false,
89+
"Description": "In OAuth 2.0, the term �grant type� refers to the way an application gets an access token. In Okta this is `client_credentials`"
9590
},
9691
{
9792
"Name": "OAuthUrl",
9893
"DisplayName": "OAuth Url",
9994
"Type": "String",
10095
"DependsOn": "UseOAuth",
10196
"DefaultValue": "https://***/oauth2/default/v1/token",
102-
"Required": false
97+
"Required": false,
98+
"IsPAMEligible": false,
99+
"Description": "An optional parameter sts:ExternalId to pass with Assume Role calls"
103100
},
104101
{
105102
"Name": "IAMAssumeRole",
106103
"DisplayName": "AWS Role to Assume (IAM)",
107104
"Type": "String",
108105
"DependsOn": "UseIAM",
109-
"DefaultValue": null,
110-
"Required": false
106+
"DefaultValue": "",
107+
"Required": false,
108+
"IsPAMEligible": false,
109+
"Description": "The AWS Role to assume as the IAM User."
111110
},
112111
{
113112
"Name": "OAuthAssumeRole",
114113
"DisplayName": "AWS Role to Assume (OAuth)",
115114
"Type": "String",
116115
"DependsOn": "UseOAuth",
117-
"DefaultValue": null,
118-
"Required": false
116+
"DefaultValue": "",
117+
"Required": false,
118+
"IsPAMEligible": false,
119+
"Description": "The AWS Role to assume after getting an OAuth token."
119120
},
120121
{
121122
"Name": "ExternalId",
122123
"DisplayName": "sts:ExternalId",
123124
"Type": "String",
124-
"DependsOn": null,
125-
"DefaultValue": null,
126-
"Required": false
125+
"DependsOn": "",
126+
"DefaultValue": "",
127+
"Required": false,
128+
"IsPAMEligible": false,
129+
"Description": "An optional parameter sts:ExternalId to pass with Assume Role calls"
127130
},
128131
{
129132
"Name": "ServerUsername",
130133
"DisplayName": "Server Username",
131134
"Type": "Secret",
132-
"DependsOn": null,
133-
"DefaultValue": null,
134-
"Required": false
135+
"DependsOn": "",
136+
"DefaultValue": "",
137+
"Required": false,
138+
"IsPAMEligible": true,
139+
"Description": "The AWS Access Key for an IAM User or Client ID for OAuth. Depends on Auth method in use."
135140
},
136141
{
137142
"Name": "ServerPassword",
138143
"DisplayName": "Server Password",
139144
"Type": "Secret",
140-
"DependsOn": null,
141-
"DefaultValue": null,
142-
"Required": false
143-
},
144-
{
145-
"Name": "ServerUseSsl",
146-
"DisplayName": "Use SSL",
147-
"Type": "Bool",
148-
"DependsOn": null,
149-
"DefaultValue": "true",
150-
"Required": true
145+
"DependsOn": "",
146+
"DefaultValue": "",
147+
"Required": false,
148+
"IsPAMEligible": true,
149+
"Description": "The AWS Access Secret for an IAM User or Client Secret for OAuth. Depends on Auth method in use."
151150
}
152151
],
153152
"EntryParameters": [
@@ -160,7 +159,20 @@
160159
"OnAdd": true,
161160
"OnRemove": false,
162161
"OnReenrollment": false
163-
}
162+
},
163+
"Description": "When adding, this is the Region that the Certificate will be added to"
164+
},
165+
{
166+
"Name": "ACM Tags",
167+
"DisplayName": "ACM Tags",
168+
"Type": "String",
169+
"RequiredWhen": {
170+
"HasPrivateKey": false,
171+
"OnAdd": false,
172+
"OnRemove": false,
173+
"OnReenrollment": false
174+
},
175+
"Description": "The ACM tags that should be assigned to the certificate. Multiple name/value pairs may be entered in the format of `Name1=Value1,Name2=Value2,...,NameN=ValueN`"
164176
}
165177
],
166178
"PasswordOptions": {
File renamed without changes.

readme-src/readme-pam-support.md

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)