Your suggested change has been received. Thank you.

close

Suggest A Change

https://thales.na.market.dpondemand.io/docs/dpod/services/kmo….

back

AWS APIs

Policy Template Management APIs

search

Please Note:

Policy Template Management APIs

A default policy template is attached to AWS keys. With CCKM, you can create and attach custom policy templates to AWS keys. This section describes the CCKM policy template management APIs for AWS.

Creating Policy Templates

Use the post /v1/cckm/aws/templates API to create an AWS key policy template on CCKM. When creating a key policy template, you can specify policy parameters according to your requirements.

When a policy template is created, its status is unverified. A policy template can only be verified when it is applied to a key (during its creation). If the policy template is incorrect, the key creation fails.

To create a policy template, you must have the keycreate, keyupload, hyokkeycreate, or cloudhsmkeycreate permission.

Syntax

curl -k '<IP>/api/v1/cckm/aws/templates' -H 'Authorization: Bearer AUTHTOKEN' -H 'Content-Type: application/json' --data-binary $'{\n  "kms": "<kms-name>",\n  "key_users": ["<key-user>"]\n}' --compressed

Request Parameters

ParameterTypeDescription
AUTHTOKENstringAuthorization token.
kmsstringName or ID of the KMS.
namestringName for the policy template.
policyJSONKey policy attached to the key. Refer to Using key policies in AWS KMS for details.
external_accountsarray of stringsAWS accounts that can use this key.
key_adminsarray of stringsIAM users who can administer this key using the KMS API.
key_admins_rolesarray of stringsIAM roles that can administer this key using the KMS API.
key_usersarray of stringsIAM users who can use this key in cryptographic operations.
key_users_rolesarray of stringsIAM roles that can use the CMK in cryptographic operations.

Specify policy or one of key_admins, key_admins_roles, key_users, key_users_roles, and external_accounts. They are mutually exclusive. If no parameters are specified, the default policy is used.

Example Request

curl -k 'https://127.0.0.1/api/v1/cckm/aws/templates' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJiMzUwZGQzOS1lNmEzLTQzNmItYjcyNi05YjlmNmNkMzVjZjciLCJzdWIiOiJsb2NhbHw4YTQ1MGNjZS02MGY4LTQxZTYtYTZkNS0xMTVkNDYzNDk5ZjUiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiMDk0NGUzZjctYzcyNi00YTQ1LThjY2YtMDk5ZTg0Zjg1NzU2Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6IjNjMmFlMjA1LTYzZjMtNDgxNS1iYWVjLWU1NDBmOTE2ZTU1YSIsImlhdCI6MTYyMjE4NzgyMywiZXhwIjoxNjIyMTg4MTIzfQ.d2rAAQI-VP_xObiBDLCUh8A7M1LUxZhVfnIk87_3fIU' -H 'Content-Type: application/json' --data-binary $'{\n  "kms": "kms",\n  "key_users": ["aws-user"]\n}' --compressed

Example Response

{
    "id": "6b9f2043-0a99-4041-a62d-4f6eaa408fb5",
    "name": "demo-policy-template",
    "uri": "kylo:kylo:cckm:aws-template:642aafda",
    "account": "kylo:kylo:admin:accounts:kylo",
    "application": "ncryptify:gemalto:admin:apps:kylo",
    "devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
    "createdAt": "2021-05-17T11:01:08.226051365Z",
    "updatedAt": "2021-05-17T11:01:08.218122217Z",
    "key_users": [
        "aws-user"
    ],
    "key_users_roles": [
        "iam-role"
    ],
    "key_admins": [
        "aws-user"
    ],
    "key_admins_roles": [
        "iam-role"
    ],
    "external_accounts": null,
    "policy": {
        "Id": "key-consolepolicy-3",
        "Version": "2012-10-17",
        "Statement": 
        [
            {
                "Sid": "Enable IAM UserName Permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:root"
                    ]
                },
                "Action": [
                    "kms:*"
                ],
                "Resource": "*"
            },
            {
                "Sid": "Allow access for Key Administrators",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user",
                        "arn:aws:iam::123456789012:role/iam-role"
                    ]
                },
                "Action": [
                    "kms:Create*",
                    "kms:Describe*",
                    "kms:Enable*",
                    "kms:List*",
                    "kms:Put*",
                    "kms:Update*",
                    "kms:Revoke*",
                    "kms:Disable*",
                    "kms:Get*",
                    "kms:Delete*",
                    "kms:TagResource",
                    "kms:UntagResource",
                    "kms:ScheduleKeyDeletion",
                    "kms:CancelKeyDeletion"
                ],
                "Resource": "*"
            },
            {
                "Sid": "Allow use of the key",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user",
                        "arn:aws:iam::123456789012:role/iam-role"
                    ]
                },
                "Action": [
                    "kms:Encrypt",
                    "kms:Decrypt",
                    "kms:ReEncrypt*",
                    "kms:GenerateDataKey*",
                    "kms:DescribeKey"
                ],
                "Resource": "*"
            },
            {
                "Sid": "Allow attachment of persistent resources",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user",
                        "arn:aws:iam::123456789012:role/iam-role"
                    ]
                },
                "Action": [
                    "kms:CreateGrant",
                    "kms:ListGrants",
                    "kms:RevokeGrant"
                ],
                "Resource": "*",
                "Condition": {
                    "Bool": {
                        "kms:GrantIsForAWSResource": "true"
                    }
                }
            }
        ]
    },
    "kms_name": "aws-kms",
    "kms": "3ed28894-b9f8-4c5e-bc26-daed0c3bda26",
    "account_id": 123456789012,
    "cloud": "aws",
    "is_verified": false
}

The sample output shows that an AWS key policy template with a unique ID (6b9f2043-0a99-4041-a62d-4f6eaa408fb5) is created on the AWS KMS.

In the output, "is_verified": false shows that the template is not yet used by a key and its status is unverified.

Response Codes

Response CodeDescription
2xxSuccess
4xxClient errors
5xxServer errors

Refer to HTTP status codes for details.

Viewing the Policy Templates

Use the get /v1/cckm/aws/templates API to get the list of AWS key policy templates. The results can be filtered using the query parameters.

To view policy templates, you must have the view, viewnative, viewbyok, or viewhyokkey permission.

Syntax

curl -k '<IP>/api/v1/cckm/aws/templates?skip=0&limit=10&sort=updatedAt' -H 'Authorization: Bearer AUTHTOKEN' --compressed

Request Parameters

ParameterTypeDescription
AUTHTOKENstringAuthorization token.

Request Query Parameters

ParameterTypeDescription
idstringID of the policy template.
namestringName of the policy template.
kms_namestringName or ID of the KMS.
account_idstringID of the AWS KMS account.
cloudstringName of the AWS cloud.
is_verifiedstringWhether the template is verified.
skipintegerNumber of records to skip. For example, if "skip":5 is specified, the first five records will not be displayed in the output.
limitintegerNumbers of records to display. For example, if "limit":10 is specified, then the next 10 records (after skipping the number of records specified in the skip parameter ) will be displayed in the output.
sortstringComma-delimited list of properties to sort the results.

Example Request

curl -k 'https://127.0.0.1/api/v1/cckm/aws/templates?skip=0&limit=10&sort=updatedAt' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJiMzUwZGQzOS1lNmEzLTQzNmItYjcyNi05YjlmNmNkMzVjZjciLCJzdWIiOiJsb2NhbHw4YTQ1MGNjZS02MGY4LTQxZTYtYTZkNS0xMTVkNDYzNDk5ZjUiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiMDk0NGUzZjctYzcyNi00YTQ1LThjY2YtMDk5ZTg0Zjg1NzU2Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6IjNjMmFlMjA1LTYzZjMtNDgxNS1iYWVjLWU1NDBmOTE2ZTU1YSIsImlhdCI6MTYyMjE4NzgyMywiZXhwIjoxNjIyMTg4MTIzfQ.d2rAAQI-VP_xObiBDLCUh8A7M1LUxZhVfnIk87_3fIU' --compressed

Example Response

{
    "skip": 0,
    "limit": 10,
    "total": 2,
    "resources": [
        {
            "id": "6b9f2043-0a99-4041-a62d-4f6eaa408fb5",
            "name": "demo-policy-template-1",
            "uri": "kylo:kylo:cckm:aws-template:8e104422",
            "account": "kylo:kylo:admin:accounts:kylo",
            "application": "ncryptify:gemalto:admin:apps:kylo",
            "devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
            "createdAt": "2021-05-20T03:22:06.715624Z",
            "updatedAt": "2021-05-20T03:22:06.714583Z",
            "key_users": [
                "aws-user"
            ],
            "key-admins": [
                "aws-user"
            ],
            "policy": {
                "Id": "key-consolepolicy-3",
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Sid": "Enable IAM UserName Permissions",
                        "Action": [
                            "kms:*"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:root"
                            ]
                        }
                    },
                    {
                        "Sid": "Allow access for Key Administrators",
                        "Action": [
                            "kms:Create*",
                            "kms:Describe*",
                            "kms:Enable*",
                            "kms:List*",
                            "kms:Put*",
                            "kms:Update*",
                            "kms:Revoke*",
                            "kms:Disable*",
                            "kms:Get*",
                            "kms:Delete*",
                            "kms:TagResource",
                            "kms:UntagResource",
                            "kms:ScheduleKeyDeletion",
                            "kms:CancelKeyDeletion"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:user/aws-user"
                            ]
                        }
                    },
                    {
                        "Sid": "Allow use of the key",
                        "Action": [
                            "kms:Encrypt",
                            "kms:Decrypt",
                            "kms:ReEncrypt*",
                            "kms:GenerateDataKey*",
                            "kms:DescribeKey"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:user/aws-user"
                            ]
                        }
                    },
                    {
                        "Sid": "Allow attachment of persistent resources",
                        "Action": [
                            "kms:CreateGrant",
                            "kms:ListGrants",
                            "kms:RevokeGrant"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Condition": {
                            "Bool": {
                                "kms:GrantIsForAWSResource": "true"
                            }
                        },
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:user/aws-user"
                            ]
                        }
                    }
                ]
            },
            "kms_name": "aws-kms",
            "kms": "3ed28894-b9f8-4c5e-bc26-daed0c3bda26",
            "account_id": 123456789012,
            "cloud": "aws",
            "is_verified": false
        },
        {
            "id": "6b9f2043-0a99-4041-a62d-4f6eaa408fb6",
            "name": "demo-policy-template-2",
            "uri": "kylo:kylo:cckm:aws-template:e53f41eb",
            "account": "kylo:kylo:admin:accounts:kylo",
            "application": "ncryptify:gemalto:admin:apps:kylo",
            "devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
            "createdAt": "2021-05-20T03:19:15.369859Z",
            "updatedAt": "2021-05-20T03:19:15.364818Z",
            "key_admins": [
                "aws-user"
            ],
            "key_admins_roles": [
                "iam-role"
            ],
            "key_users": [
                "aws-user"
            ],
            "key_users_roles": [
                "iam-role"
            ],
            "policy": {
                "Id": "key-consolepolicy-3",
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Sid": "Enable IAM UserName Permissions",
                        "Action": [
                            "kms:*"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:root"
                            ]
                        }
                    },
                    {
                        "Sid": "Allow access for Key Administrators",
                        "Action": [
                            "kms:Create*",
                            "kms:Describe*",
                            "kms:Enable*",
                            "kms:List*",
                            "kms:Put*",
                            "kms:Update*",
                            "kms:Revoke*",
                            "kms:Disable*",
                            "kms:Get*",
                            "kms:Delete*",
                            "kms:TagResource",
                            "kms:UntagResource",
                            "kms:ScheduleKeyDeletion",
                            "kms:CancelKeyDeletion"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:user/aws-user",
                                "arn:aws:iam::123456789012:role/iam-role"
                            ]
                        }
                    },
                    {
                        "Sid": "Allow use of the key",
                        "Action": [
                            "kms:Encrypt",
                            "kms:Decrypt",
                            "kms:ReEncrypt*",
                            "kms:GenerateDataKey*",
                            "kms:DescribeKey"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:user/aws-user",
                                "arn:aws:iam::123456789012:role/iam-role"
                            ]
                        }
                    },
                    {
                        "Sid": "Allow attachment of persistent resources",
                        "Action": [
                            "kms:CreateGrant",
                            "kms:ListGrants",
                            "kms:RevokeGrant"
                        ],
                        "Effect": "Allow",
                        "Resource": "*",
                        "Condition": {
                            "Bool": {
                                "kms:GrantIsForAWSResource": "true"
                            }
                        },
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::123456789012:user/aws-user",
                                "arn:aws:iam::123456789012:role/iam-role"
                            ]
                        }
                    }
                ]
            },
            "kms_name": "aws-kms",
            "kms": "3ed28894-b9f8-4c5e-bc26-daed0c3bda26",
            "account_id": 123456789012,
            "cloud": "aws",
            "is_verified": false
        }
    ]
}

The sample output shows two AWS key policy templates.

Response Codes

Response CodeDescription
2xxSuccess
4xxClient errors
5xxServer errors

Refer to HTTP status codes for details.

Viewing Details of a Policy Template

Use the get /v1/cckm/aws/templates/{id} API to view the details of an AWS key policy template. When a template is created, the API shows "is_verified": false.

When you apply a template while creating an AWS key:

  • If the key is created or uploaded successfully, the template status changes to verified, and the template cannot be modified. It is indicated by "is_verified": true.

  • If the key creation fails, the template status remains "is_verified": false.

To view policy templates, you must have the view, viewnative, viewbyok, or viewhyokkey permission.

Syntax

curl -k '<IP>/api/v1/cckm/aws/templates/{id}' -H 'Authorization: Bearer AUTHTOKEN' --compressed

Here, {id} represents the ID of the policy template.

Request Parameter

ParameterTypeDescription
AUTHTOKENstringAuthorization token.

Example Request

curl -k 'https://127.0.0.1/api/v1/cckm/aws/templates/6b9f2043-0a99-4041-a62d-4f6eaa408fb5' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJiMzUwZGQzOS1lNmEzLTQzNmItYjcyNi05YjlmNmNkMzVjZjciLCJzdWIiOiJsb2NhbHw4YTQ1MGNjZS02MGY4LTQxZTYtYTZkNS0xMTVkNDYzNDk5ZjUiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiMDk0NGUzZjctYzcyNi00YTQ1LThjY2YtMDk5ZTg0Zjg1NzU2Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6IjNjMmFlMjA1LTYzZjMtNDgxNS1iYWVjLWU1NDBmOTE2ZTU1YSIsImlhdCI6MTYyMjE4NzgyMywiZXhwIjoxNjIyMTg4MTIzfQ.d2rAAQI-VP_xObiBDLCUh8A7M1LUxZhVfnIk87_3fIU' --compressed

Example Response

{
    "id": "6b9f2043-0a99-4041-a62d-4f6eaa408fb5",
    "name": "demo-policy-template",
    "uri": "kylo:kylo:cckm:aws-template:642aafda",
    "account": "kylo:kylo:admin:accounts:kylo",
    "application": "ncryptify:gemalto:admin:apps:kylo",
    "devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
    "createdAt": "2021-05-17T11:01:08.226051365Z",
    "updatedAt": "2021-05-17T11:01:08.218122217Z",
    "key_users": [
        "aws-user"
    ],
    "key-admins": [
        "aws-user"
    ],
    "external_accounts": null,
    "policy": {
        "Id": "key-consolepolicy-3",
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Enable IAM UserName Permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:root"
                    ]
                },
                "Action": [
                    "kms:*"
                ],
                "Resource": "*"
            },
            {
                "Sid": "Allow use of the key",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user",
                        "arn:aws:iam::123456789012:role/iam-role"
                    ]
                },
                "Action": [
                    "kms:Encrypt",
                    "kms:Decrypt",
                    "kms:ReEncrypt*",
                    "kms:GenerateDataKey*",
                    "kms:DescribeKey"
                ],
                "Resource": "*"
            },
            {
                "Sid": "Allow attachment of persistent resources",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user",
                        "arn:aws:iam::123456789012:role/iam-role"
                    ]
                },
                "Action": [
                    "kms:CreateGrant",
                    "kms:ListGrants",
                    "kms:RevokeGrant"
                ],
                "Resource": "*",
                "Condition": {
                    "Bool": {
                        "kms:GrantIsForAWSResource": "true"
                    }
                }
            }
        ],
        "kms_name": "aws-kms",
        "kms": "3ed28894-b9f8-4c5e-bc26-daed0c3bda26",
        "account_id": 123456789012,
        "cloud": "aws",
        "is_verified": true
    }
}

The sample output shows details of the policy template with the ID 6b9f2043-0a99-4041-a62d-4f6eaa408fb5. In the output, "is_verified": "true" shows that the template has been used by an AWS key.

Response Codes

Response CodeDescription
2xxSuccess
4xxClient errors
5xxServer errors

Refer to HTTP status codes for details.

Updating Policy Templates

Use the patch /v1/cckm/aws/templates/{id} API to update an AWS key policy template on CCKM. When updating a key policy template, you can modify policy parameters according to your requirements.

  • An unverified template remains unverified after update.

  • A verified but not in-use template turns unverified after update.

  • When you try to update a verified and in-use template, changes are pushed to all the associated keys and the template remains verified. To ensure the changes are pushed, the auto_push parameter must be set to true.

To update a policy template, you must have the keyupdate permission.

Syntax

curl -k '<IP>/api/v1/cckm/aws/templates/{id}' -X PATCH -H 'Authorization: Bearer AUTHTOKEN' -H 'Content-Type: application/json' -H 'accept: application/json' --data-binary $'{\n  "kms": "<kms-name>",\n  "external_accounts": ["<external-account>"],\n  "key_admins": ["<key-admin>"],\n  "key_admins_roles": ["<key-admin-role>"],\n  "key_users": ["<key-user>"],\n  "key_users_roles": ["<key-user-role>"],\n  "policy": {<key-policy>},\n  "auto_push": <false|true>\n}' --compressed

Here, {id} represents the ID of the policy template.

Request Parameters

ParameterTypeDescription
AUTHTOKENstringAuthorization token.
kmsstringName or ID of the KMS.
external_accountsarray of stringsAWS accounts that can use this policy template.
key_adminsarray of stringsIAM users who can administer this policy template using the KMS API.
key_admins_rolesarray of stringsIAM roles that can administer this policy template using the KMS API.
key_usersarray of stringsIAM users who can use this policy template in cryptographic operations.
key_users_rolesarray of stringsIAM roles that can use the CMK in cryptographic operations.
policyJSONPolicy to be attached to the template.
auto_pushbooleanPushes the verified policy template to all the associated keys. When updating a 'verified' policy template, auto_push must be set to true.

Specify policy or one of key_admins, key_admins_roles, key_users, key_users_roles, and external_accounts. They are mutually exclusive. If no parameters are specified, the default policy is used.

Example Request

curl -k 'https://127.0.0.1/api/v1/cckm/aws/templates/6b9f2043-0a99-4041-a62d-4f6eaa408fb5' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJiMzUwZGQzOS1lNmEzLTQzNmItYjcyNi05YjlmNmNkMzVjZjciLCJzdWIiOiJsb2NhbHw4YTQ1MGNjZS02MGY4LTQxZTYtYTZkNS0xMTVkNDYzNDk5ZjUiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiMDk0NGUzZjctYzcyNi00YTQ1LThjY2YtMDk5ZTg0Zjg1NzU2Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6IjNjMmFlMjA1LTYzZjMtNDgxNS1iYWVjLWU1NDBmOTE2ZTU1YSIsImlhdCI6MTYyMjE4NzgyMywiZXhwIjoxNjIyMTg4MTIzfQ.d2rAAQI-VP_xObiBDLCUh8A7M1LUxZhVfnIk87_3fIU' -H 'Content-Type: application/json' --data-binary $'{\n  "kms": "kms",\n  "policy": {<key-policy>}\n}' --compressed

Example Response

{
    "id": "6b9f2043-0a99-4041-a62d-4f6eaa408fb5",
    "name": "demo-policy-template",
    "uri": "kylo:kylo:cckm:aws-template:8e104422",
    "account": "kylo:kylo:admin:accounts:kylo",
    "application": "ncryptify:gemalto:admin:apps:kylo",
    "devAccount": "ncryptify:gemalto:admin:accounts:gemalto",
    "createdAt": "2021-05-20T03:22:06.715624Z",
    "updatedAt": "2021-05-20T03:22:06.714583Z",
    "key_users": [
        "aws-user"
    ],
    "key-admins": [
        "aws-user"
    ],
    "policy": {
        "Id": "key-consolepolicy-3",
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Enable IAM UserName Permissions",
                "Action": [
                    "kms:*"
                ],
                "Effect": "Allow",
                "Resource": "*",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:root"
                    ]
                }
            },
            {
                "Sid": "Allow access for Key Administrators",
                "Action": [
                    "kms:Create*",
                    "kms:Describe*",
                    "kms:Enable*",
                    "kms:List*",
                    "kms:Put*",
                    "kms:Update*",
                    "kms:Revoke*",
                    "kms:Disable*",
                    "kms:Get*",
                    "kms:Delete*",
                    "kms:TagResource",
                    "kms:UntagResource",
                    "kms:ScheduleKeyDeletion",
                    "kms:CancelKeyDeletion"
                ],
                "Effect": "Allow",
                "Resource": "*",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user"
                    ]
                }
            },
            {
                "Sid": "Allow use of the key",
                "Action": [
                    "kms:Encrypt",
                    "kms:Decrypt",
                    "kms:ReEncrypt*",
                    "kms:GenerateDataKey*",
                    "kms:DescribeKey"
                ],
                "Effect": "Allow",
                "Resource": "*",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user"
                    ]
                }
            },
            {
                "Sid": "Allow attachment of persistent resources",
                "Action": [
                    "kms:CreateGrant",
                    "kms:ListGrants",
                    "kms:RevokeGrant"
                ],
                "Effect": "Allow",
                "Resource": "*",
                "Condition": {
                    "Bool": {
                        "kms:GrantIsForAWSResource": "true"
                    }
                },
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/aws-user"
                    ]
                }
            }
        ]
    },
    "kms_name": "aws-kms",
    "kms": "3ed28894-b9f8-4c5e-bc26-daed0c3bda26",
    "account_id": 123456789012,
    "cloud": "aws",
    "is_verified": true,
    "job_id": "8e2c8400-be19-4da7-80b9-9beb51e03650",
    "job_status": "in_progress"
}

The sample output shows that an AWS key policy template with a unique ID (6b9f2043-0a99-4041-a62d-4f6eaa408fb5) is created on the AWS KMS.

In the output, "is_verified": true shows whether the template is verified. When a verified template is updated, a new scheduler job with the ("job_id") is created. You can view the job status using its "job_id".

Response Codes

Response CodeDescription
2xxSuccess
4xxClient errors
5xxServer errors

Refer to HTTP status codes for details.

Deleting a Policy Template

Use the delete /v1/cckm/aws/templates/{id} API to delete an AWS key policy template.

An unverified policy template can be deleted directly. However, if a template is verified and in use by a key (applied to a key), it cannot be deleted.

To delete a policy template, you must have the keydelete, hyokkeydelete, or cloudhsmkeydelete permission.

Syntax

curl -k '<IP>/api/v1/cckm/aws/templates/{id}' -X DELETE -H 'Authorization: Bearer AUTHTOKEN' --compressed

Here, {id} represents the ID of the policy template.

Request Parameter

ParameterTypeDescription
AUTHTOKENstringAuthorization token.

Example Request

curl -k 'https://127.0.0.1/api/v1/cckm/aws/templates/6b9f2043-0a99-4041-a62d-4f6eaa408fb5' -X DELETE -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJiMzUwZGQzOS1lNmEzLTQzNmItYjcyNi05YjlmNmNkMzVjZjciLCJzdWIiOiJsb2NhbHw4YTQ1MGNjZS02MGY4LTQxZTYtYTZkNS0xMTVkNDYzNDk5ZjUiLCJpc3MiOiJreWxvIiwiYWNjIjoia3lsbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIiwiY3VzdCI6eyJkb21haW5faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJncm91cHMiOlsiYWRtaW4iXSwic2lkIjoiMDk0NGUzZjctYzcyNi00YTQ1LThjY2YtMDk5ZTg0Zjg1NzU2Iiwiem9uZV9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LCJqd3RpZCI6IjNjMmFlMjA1LTYzZjMtNDgxNS1iYWVjLWU1NDBmOTE2ZTU1YSIsImlhdCI6MTYyMjE4NzgyMywiZXhwIjoxNjIyMTg4MTIzfQ.d2rAAQI-VP_xObiBDLCUh8A7M1LUxZhVfnIk87_3fIU' --compressed

Example Response

{
    "status": 204
}

The policy template with the ID 6b9f2043-0a99-4041-a62d-4f6eaa408fb5 is deleted.

Response Codes

Response CodeDescription
2xxSuccess
4xxClient errors
5xxServer errors

Refer to HTTP status codes for details.