Skip to content

Commit 46caae0

Browse files
Merge 4fca821 into 2b21ca7
2 parents 2b21ca7 + 4fca821 commit 46caae0

File tree

10 files changed

+450
-151
lines changed

10 files changed

+450
-151
lines changed
Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,20 @@
1-
name: Starter Workflow
2-
on: [workflow_dispatch, push, pull_request]
1+
name: Keyfactor Bootstrap Workflow
32

4-
jobs:
5-
call-create-github-release-workflow:
6-
uses: Keyfactor/actions/.github/workflows/github-release.yml@main
7-
8-
get-manifest-properties:
9-
runs-on: windows-latest
10-
outputs:
11-
update_catalog: ${{ steps.read-json.outputs.prop }}
12-
steps:
13-
- uses: actions/checkout@v3
14-
- name: Read json
15-
id: read-json
16-
shell: pwsh
17-
run: |
18-
$json = Get-Content integration-manifest.json | ConvertFrom-Json
19-
echo "::set-output name=prop::$(echo $json.update_catalog)"
20-
21-
call-dotnet-build-and-release-workflow:
22-
needs: [call-create-github-release-workflow]
23-
uses: Keyfactor/actions/.github/workflows/dotnet-build-and-release.yml@main
24-
with:
25-
release_version: ${{ needs.call-create-github-release-workflow.outputs.release_version }}
26-
release_url: ${{ needs.call-create-github-release-workflow.outputs.release_url }}
27-
release_dir: DataPower/bin/Debug # TODO: set build output directory to upload as a release, relative to checkout workspace
28-
secrets:
29-
token: ${{ secrets.PRIVATE_PACKAGE_ACCESS }}
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types: [opened, closed, synchronize, edited, reopened]
7+
push:
8+
create:
9+
branches:
10+
- 'release-*.*'
3011

31-
call-generate-readme-workflow:
32-
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
33-
uses: Keyfactor/actions/.github/workflows/generate-readme.yml@main
12+
jobs:
13+
call-starter-workflow:
14+
uses: keyfactor/actions/.github/workflows/starter.yml@3.1.2
3415
secrets:
35-
token: ${{ secrets.APPROVE_README_PUSH }}
36-
37-
call-update-catalog-workflow:
38-
needs: get-manifest-properties
39-
if: needs.get-manifest-properties.outputs.update_catalog == 'True' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
40-
uses: Keyfactor/actions/.github/workflows/update-catalog.yml@main
41-
secrets:
42-
token: ${{ secrets.SDK_SYNC_PAT }}
16+
token: ${{ secrets.V2BUILDTOKEN}}
17+
APPROVE_README_PUSH: ${{ secrets.APPROVE_README_PUSH}}
18+
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }}
19+
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }}
20+
scan_token: ${{ secrets.SAST_TOKEN }}

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
1.1.1
2+
* Dual Build .Net 6 and .Net 8 support
3+
* Test Tool Modifications
4+
* Readme Updates
5+
16
1.1.0
27
* Convert to Universal Orchestrator Framework
38
* Added Support for .cer files during inventory
49
* Added PAM Support
510

611
1.0.0
712
* Windows Orchestrator with Add, Remove and Inventory Capabilities
8-

DataPower/DataPower.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp3.1</TargetFramework>
5-
<RootNamespace>Keyfactor.Extensions.Orchestrator.DataPower</RootNamespace>
4+
<AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
5+
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
66
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
7+
<ImplicitUsings>disable</ImplicitUsings>
78
</PropertyGroup>
89

910
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">

DataPower/Jobs/Inventory.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ private JobResult PerformInventory(InventoryJobConfiguration config, SubmitInven
7474
_protocol = ci.Protocol;
7575
_logger.LogTrace(
7676
$"Certificate Config Domain: {ci.Domain} and Certificate Store: {ci.CertificateStore}");
77-
_logger.LogTrace($"Any Job Config {JsonConvert.SerializeObject(config)}");
7877
_logger.LogTrace("Entering IBM DataPower: Certificate Inventory");
7978
_logger.LogTrace(
8079
$"Entering processJob for Domain: {ci.Domain} and Certificate Store: {ci.CertificateStore}");

DataPower/Jobs/Management.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public JobResult ProcessJob(ManagementJobConfiguration config)
4343
try
4444
{
4545
_logger.MethodEntry(LogLevel.Debug);
46-
_logger.LogTrace($"Any Job Config {JsonConvert.SerializeObject(config)}");
4746

4847
var ci = Utility.ParseCertificateConfig(config);
4948
var np = Utility.ParseStoreProperties(config);

README.md

Lines changed: 239 additions & 105 deletions
Large diffs are not rendered by default.

docsource/content.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
## Overview
2+
3+
The IBM DataPower Orchestrator allows for the management of certificates in the IBM Datapower platform. Inventory, Add and Remove functions are supported. This integration can add/replace certificates in any domain\directory combination.
4+
5+
* DataPower
6+
7+
## Requirements
8+
The IBM DataPower Orchestrator allows for the management of certificates in the IBM Datapower platform. Inventory, Add and Remove functions are supported. This integration can add/replace certificates in any domain\directory combination. For example default\pubcert
9+
10+
11+
## Test Cases
12+
13+
***
14+
15+
#### INVENTORY TEST CASES
16+
Case Number|Case Name|Case Description|Expected Results|Passed
17+
------------|---------|----------------|--------------|----------
18+
1|Pubcert Inventory No Black List Default Domain|Should Inventory Everything in the DataPower pubcert directory on the Default Domain|Keyfactor Inventory Matches pubcert default domain inventory|True
19+
1a|Pubcert Inventory No Black List Default Domain using PAM Credentials|Should Inventory Everything in the DataPower pubcert directory on the Default Domain using credentials stored in a PAM Provider|Keyfactor Inventory Matches pubcert default domain inventory|True
20+
1b|Pubcert Inventory With Black List Default Domain|Should Inventory Everything in the DataPower pubcert directory on the Default Domain Outside of Black List Items ex: Test.pem,Test2.pem|Keyfactor Inventory Matches pubcert default domain inventory outside of Black List Items|True
21+
2|Pubcert Inventory No Black List *testdomain\pubcert* path|Should Inventory Everything in the DataPower pubcert directory on the *testdomain\pubcert* path|Keyfactor Inventory Matches pubcert default domain inventory|True
22+
2a|Pubcert Inventory With Black List *testdomain\pubcert* path|Should Inventory Everything in the DataPower pubcert directory on the *testdomain\pubcert* path Outside of Black List Items ex: Cert1.pem,Cert2.pem|Keyfactor Inventory Matches pubcert default domain inventory outside of Black List Items|True
23+
3|Private Key Cert Inventory No Black List Default Domain|Should Inventory Everything in the DataPower cert directory on the Default Domain|Keyfactor Inventory Matches pubcert default domain inventory|True
24+
3a|Private Key Cert Inventory No Black List Default Domain with Credentials Stored in PAM Provider|Should Inventory Everything in the DataPower cert directory on the Default Domain with Credentials Stored in PAM Provider|Keyfactor Inventory Matches pubcert default domain inventory|True
25+
3b|Private Key Cert Inventory With Black List Default Domain|Should Inventory Everything in the DataPower cert directory on the Default Domain Oustide of Black List Items ex: Test.pem,Test2.pem|Keyfactor Inventory Matches cert default domain inventory outside of Black List Items|True
26+
4|Private Key Cert Inventory No Black List *testdomain\cert* path|Should Inventory Everything in the DataPower cert directory on the *testdomain\cert* path|Keyfactor Inventory Matches *testdomain\cert* path| inventory|True
27+
4a|Private Key Cert Inventory With Black List *testdomain\cert* path||Should Inventory Everything in the DataPower cert directory on the *testdomain\cert* path|Keyfactor Inventory Matches *testdomain\cert* path Oustide of Black List Items ex: Test,Test2|Keyfactor Inventory Matches everything in *testdomain\cert* path outside of Black List Items
28+
29+
***
30+
31+
#### ADD/REMOVE TEST CASES
32+
Case Number|Case Name|Case Description|Overwrite Flag|Alias Name|Expected Results|Passed
33+
------------|---------|----------------|--------------|----------|----------------|--------------
34+
1|Pubcert Add with Alias Default Domain|Will create new Cert, Key and Pem/crt entry|False|cryptoobjs|Crypto Key Created, Crypto Cert Created, Pem/Crt created|True
35+
1a|Pubcert Overwrite with Alias Default Domain|Will Replaced Cert, Key and Pem/crt entry|true|cryptoobjs|Crypto Key Replaced, Crypto Cert Replaced, Pem/Crt Replaced|True
36+
1b|Pubcert Add without Alias Default Domain|Will create new Cert, Key and Pem/crt entry with GUID as name|False|cryptoobjs|Crypto Key Created, Crypto Cert Created, Pem/Crt created with GUID as name|True
37+
2|Private Key Add with Alias Default Domain|Will create new Cert, Key and Pem/crt entry|False|cryptoobjs|Crypto Key Created, Crypto Cert Created, Pem/Crt created|True
38+
2a|Private Key Overwrite with Alias Default Domain|Will Replaced Cert, Key and Pem/crt entry|true|cryptoobjs|Crypto Key Replaced, Crypto Cert Replaced, Pem/Crt Replaced|True
39+
2b|Private Key Add without Alias Default Domain|Will create new Cert, Key and Pem/crt entry with GUID as name|False|cryptoobjs|Crypto Key Created, Crypto Cert Created, Pem/Crt created with GUID as name|True
40+
2c|Private Key Cert Add with Alias *testdomain\cert* path|Will create new Cert, Key and Pem/crt entry in *testdomain\cert* path|False|cryptoobjs|Crypto Key Created, Crypto Cert Created, Pem/Crt created in *testdomain\pubcert* path|True
41+
2d|Private Key Cert Add with Alias *testdomain\cert* path|Will create new Cert, Key and Pem/crt entry in *testdomain\cert* path with PAM Credentials|False|cryptoobjs|Crypto Key Created, Crypto Cert Created, Pem/Crt created in *testdomain\pubcert* path gettting credentials from a PAM Provider|True
42+
3a|Private Key Cert Overwrite with Alias *testdomain\cert* path|Will Replaced Cert, Key and Pem/crt entry in *testdomain\cert* path|true|cryptoobjs|Crypto Key Replaced, Crypto Cert Replaced, Pem/Crt Replaced in *testdomain\pubcert* path|True
43+
3b|Private Key Cert Add without Alias *testdomain\cert* path|Will create new Cert, Key and Pem/crt entry with GUID as name in *testdomain\cert* path|False|cryptoobjs|Crypto Key Created, Crypto Cert Created, Pem/Crt created with GUID as name in *testdomain\cert* path|True
44+
4|Remove Private Key and Cert From Default Domain|Remove Private Key and Cert From Default Domain|False|cryptoobjs|Crypto Certificate, Crypto Key and Pem/Crt are removed from Data Power|True
45+
4a|Remove Private Key and Cert From *testdomain\cert* path|Remove Private Key and Cert From *testdomain\cert* path|False|cryptoobjs|Crypto Certificate, Crypto Key and Pem/Crt are removed from Data Power *testdomain\cert* path|True
46+
4b|Remove PubCert|Remove PubCert|False|cryptoobjs|Error Occurs, cannot remove Public Certs|True
47+
4c|Remove Private Key and Cert From *testdomain\cert* path with PAM Credentials|Remove Private Key and Cert From *testdomain\cert* path using credentials stored in a PAM Provider|False|cryptoobjs|Crypto Certificate, Crypto Key and Pem/Crt are removed from Data Power *testdomain\cert* path|True
48+
49+
***
50+
51+

docsource/datapower.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
## Keyfactor Orchestrator Integration: DataPower Setup
2+
3+
### Overview
4+

docsource/fortiweb.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+

integration-manifest.json

Lines changed: 111 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,20 @@
33
"integration_type": "orchestrator",
44
"name": "DataPower Orchestrator",
55
"status": "production",
6+
"update_catalog": true,
7+
"link_github": true,
8+
"support_level": "kf-supported",
9+
"release_project": "DataPower/DataPower.csproj",
10+
"release_dir": "DataPower/bin/Release",
611
"description": "The IBM DataPower Orchestrator allows for the management of certificates in the IBM Datapower platform. Inventory, Add and Remove functions are supported. This integration can add/replace certificates in any domain\\directory combination. ",
712
"link_github": false,
813
"update_catalog": false,
914
"about": {
1015
"orchestrator": {
11-
"UOFramework": "10.1",
16+
"UOFramework": "10.4",
17+
"keyfactor_platform_version": "10.4",
1218
"pam_support": true,
19+
"keyfactor_platform_version": "10.4",
1320
"win": {
1421
"supportsCreateStore": false,
1522
"supportsDiscovery": false,
@@ -27,7 +34,109 @@
2734
"supportsReenrollment": false,
2835
"supportsInventory": true,
2936
"platformSupport": "Unused"
30-
}
37+
},
38+
"store_types": [
39+
{
40+
"Name": "IBM Data Power",
41+
"ShortName": "DataPower",
42+
"Capability": "DataPower",
43+
"LocalStore": false,
44+
"SupportedOperations": {
45+
"Add": true,
46+
"Create": false,
47+
"Discovery": false,
48+
"Enrollment": false,
49+
"Remove": false
50+
},
51+
"Properties": [
52+
{
53+
"Name": "ServerUsername",
54+
"DisplayName": "Server Username",
55+
"Type": "Secret",
56+
"DependsOn": "",
57+
"DefaultValue": "",
58+
"Required": false,
59+
"IsPAMEligible": true,
60+
"Description": "Api UserName for DataPower. (or valid PAM key if the username is stored in a KF Command configured PAM integration)."
61+
},
62+
{
63+
"Name": "ServerPassword",
64+
"DisplayName": "Server Password",
65+
"Type": "Secret",
66+
"DependsOn": "",
67+
"DefaultValue": "",
68+
"Required": false,
69+
"IsPAMEligible": true,
70+
"Description": "A password for DataPower API access. Used for inventory.(or valid PAM key if the password is stored in a KF Command configured PAM integration)."
71+
},
72+
{
73+
"Name": "ServerUseSsl",
74+
"DisplayName": "Use SSL",
75+
"Type": "Bool",
76+
"DependsOn": "",
77+
"DefaultValue": "true",
78+
"Required": true,
79+
"Description": "Should be true, http is not supported."
80+
},
81+
{
82+
"Name": "InventoryBlackList",
83+
"DisplayName": "Inventory Black List",
84+
"Type": "String",
85+
"DependsOn": "",
86+
"DefaultValue": "",
87+
"Required": false,
88+
"IsPAMEligible": false,
89+
"Description": "Comma seperated list of alias values you do not want to inventory from DataPower."
90+
},
91+
{
92+
"Name": "Protocol",
93+
"DisplayName": "Protocol Name",
94+
"Type": "String",
95+
"DependsOn": "",
96+
"DefaultValue": "https",
97+
"Required": true,
98+
"IsPAMEligible": false,
99+
"Description": "Comma seperated list of alias values you do not want to inventory from DataPower."
100+
},
101+
{
102+
"Name": "PublicCertStoreName",
103+
"DisplayName": "Public Cert Store Name",
104+
"Type": "String",
105+
"DependsOn": "",
106+
"DefaultValue": "pubcert",
107+
"Required": true,
108+
"IsPAMEligible": false,
109+
"Description": "This probably will remain pubcert unless someone changed the default name in DataPower."
110+
},
111+
{
112+
"Name": "InventoryPageSize",
113+
"DisplayName": "Inventory Page Size",
114+
"Type": "String",
115+
"DependsOn": "",
116+
"DefaultValue": "100",
117+
"Required": true,
118+
"IsPAMEligible": false,
119+
"Description": "This determines the page size during the inventory calls. (100 should be fine)."
120+
}
121+
],
122+
"EntryParameters": [],
123+
"ClientMachineDescription": "The Client Machine field should contain the IP or Domain name and Port Needed for REST API Access. For SSH Access, Port 22 will be used.",
124+
"StorePathDescription": "The Store Path field should always be / unless we later determine there are alternate locations needed.",
125+
"PasswordOptions": {
126+
"EntrySupported": false,
127+
"StoreRequired": false,
128+
"Style": "Default"
129+
},
130+
"PrivateKeyAllowed": "Optional",
131+
"JobProperties": [
132+
133+
],
134+
"ServerRequired": true,
135+
"PowerShell": false,
136+
"BlueprintAllowed": false,
137+
"CustomAliasAllowed": "Required"
138+
}
139+
]
31140
}
32141
}
33142
}

0 commit comments

Comments
 (0)