Cloud Capture permissions
The Cloud Capture managed service uses the public cloud APIs to extract information about your cloud environments. In order to do this, you need to provide Kosli with an IAM role inside your cloud environment that allows access to these APIs. The role is created and managed by you. The role must contain the relevant assume-trust policy to allow Kosli to access your account and must contain the correct permissions for Kosli to find and snapshot your resources.- AWS
- GCP
Kosli publishes a CloudFormation template, for use in AWS, showing the permissions needed. The template is publicly accessible and can be used directly within an
aws cloudformation create-stack call.The CloudFormation template we share with you includes a “phone-home” feature that notifies Kosli when a CloudFormation stack has been built from it; this allows us to pick up the AWS AccountId for the account in which you have used the CloudFormation template without you needing to do anything. This automation is especially useful when you deploy the template as a StackSet within an Organizational Unit.If you wish to build an IAM role for Cloud Capture without using our published CloudFormation template, the permissions needed are those shown below. The role must contain an Assume Role policy that allows the Kosli account to access the resources, and must include an externalId. Both of these values are supplied by Kosli and cannot be derived; you cannot construct the trust policy without them.Assume role
The IAM role defined within the CloudFormation template includes an “assume role” policy granting permission from Kosli. This appears as:All permissions needed
The IAM role defined within the Cloudformation template includes a number of IAM policy statements, granting read-only access to some AWS APIs. The statements are:How Kosli isolates customers
Cloud Capture runs as a shared, autoscaled service, but each job runs under a role that is scoped to one customer:- A Cloud Capture worker picks up a job for your organization and assumes the role in your account using your externalId. A worker running for a different customer is unable to read the externalId for your cloud account.
- When the job finishes, the temporary credentials for your account are discarded. A worker holding credentials for your cloud account has no path to anyone else’s account.
- The ExternalId lives in Kosli’s Parameter Store and is readable only by the Kosli-side role for your organization. The shared task role cannot read any customer’s ExternalId. Separation is enforced by IAM, not by application code.