Short-lived credentials through roles
A role hands out temporary credentials that expire on their own, so a Lambda function, an EC2 server or a CI pipeline never needs a stored access key.
AWS IAM · AWS Partner · Los Angeles
Each person, app and pipeline gets exactly the access its job needs.
AWS Identity and Access Management (IAM) is the rulebook of your AWS account: it decides who or what may call which action on which resource. We map the identities you have today, replace shared logins and long-lived keys with roles, write policies scoped to real ARNs and set guardrails so a mistake in one account cannot spread. Zoho integrations get the same treatment.
Who
Policy
Resource
01What IAM handles well, and its limits
IAM is not optional: every AWS API call is checked against it, whether you planned for that or not. The question is whether your rules were written on purpose. It covers access to AWS itself, so the logins inside your own app or your Zoho org need other tools.
A role hands out temporary credentials that expire on their own, so a Lambda function, an EC2 server or a CI pipeline never needs a stored access key.
Policies can name a single table, a key prefix in a bucket or one secret, and add conditions such as Region, MFA or a request tag.
With AWS Organizations, service control policies set a ceiling that no one inside a member account can raise, admins included.
Last-accessed data and IAM Access Analyzer show which services a role never touches, which makes trimming a policy a matter of evidence.
Sign-up, passwords and social login for your own users belong in Amazon Cognito or your app’s auth layer. IAM users are for builders and machines.
Profiles, roles and sharing rules in Zoho CRM control record access there. IAM only governs what touches your AWS resources.
02IAM services
Most accounts we open have the same story: an admin policy attached to too many things, access keys older than the intern who created them, and nobody sure what would break if they were removed. Here is how we untangle it.
Every user, role, group, access key and trust relationship in one sheet, with the last time each was used and who owns it.
Separate accounts for production, staging and shared tools, plus IAM Identity Center permission sets so people sign in once and pick the account they need.
CI pipelines move to OIDC federation, servers to instance profiles, functions to execution roles. Old keys are deactivated first and deleted once nothing complains.
MFA on the root user with no root access keys, service control policies that block risky actions, and permissions boundaries for teams that create their own roles.
We compare granted permissions with what was actually called, remove leavers, rotate whatever keys must stay, and write down each change in plain English.
03A least-privilege review
Here is a sample review of the role behind a Zoho sync function. It started life with full admin rights because someone needed it working on a Friday. Drag the slider or pick a stage and watch the policy shrink.
zoho-sync-fn / inline policySample
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}]
}
Reach of this role (sample, relative)
The function can delete any table, read every secret and create new users. If its code or a dependency is ever compromised, so is the whole account.
Sample review. Real reviews use at least a few weeks of CloudTrail history, and the trimmed policy runs in staging before production.
04Try it · sample account
Tick the actions a Zoho sync role needs, choose how wide the resources are, and add guardrails. The JSON updates as you go. Then fire sample requests at it and see how IAM decides: an explicit deny wins, an allow comes next, and anything not mentioned is denied.
Checking…
Sample account 111122223333 in us-east-1. This tester checks one identity-based policy only. Real decisions also weigh service control policies, permissions boundaries, session policies and resource-based policies such as bucket and key policies.
05IAM + Zoho
Zoho runs outside your AWS account, so every integration has to answer one question: where does the credential live? Our rule of thumb is that Zoho should hold as little AWS access as possible, and ideally none at all.
webhook
invokes
A CRM workflow posts to an API Gateway URL checked by a shared secret or a Lambda authorizer. The function behind it runs under an execution role allowed to write one DynamoDB table.
Credential lives in: the Lambda execution role, inside AWS
readscalls
The refresh token for the Zoho API sits in one secret. The role’s policy names that secret’s ARN for GetSecretValue and nothing else, so other functions cannot read it.
Credential lives in: one secret, readable by one role
import
When Zoho Analytics pulls files from S3, it gets its own IAM user that can list and read a single bucket prefix. Its keys are rotated on a calendar and it can write nothing.
Credential lives in: Zoho, scoped to one prefix
HTTPS
Custom functions in Zoho Flow or Zoho Catalyst call the same API Gateway routes rather than carrying AWS keys, so revoking access is a single change on your side.
Credential lives in: an API key you can revoke
06IAM pricing
IAM itself has no charge, and neither does IAM Identity Center. The bill only appears if you switch on certain IAM Access Analyzer features, and those are priced per role, per resource or per check.
IAM users, roles, groups and policies
$0
No additional charge
IAM Identity Center (single sign-on)
$0
No extra charge
Access Analyzer: external access, policy validation, policy generation
$0
No additional charge
| Paid Access Analyzer feature | US East (N. Virginia) list price | When it is worth it |
|---|---|---|
| Unused access analysis | $0.20per IAM role or user analyzed, per month | Finding roles, keys and permissions nobody has used in a set number of days |
| Internal access analysis | $9.00per monitored resource, per month, per Region | Seeing which identities inside your organization can reach a few sensitive resources |
| Custom policy checks | $0.0020per API call | Blocking a pull request when a policy grows new permissions |
How our IAM work is priced. AWS charges nothing for the rulebook, but writing it well takes time. We list the accounts, roles, permission sets, guardrails and Zoho connections in a BRD, put one fixed price on that list and start only after you sign. Our first call about it is free.
AWS list prices in USD, before tax. Internal and unused access analysis bill once when set up and then on the first of each month. Logging you keep for reviews, such as CloudTrail trails or S3 storage, is billed by those services. We re-check Access Analyzer rates for your Region before turning anything on.
07IAM questions
Users or roles, Identity Center, the root user, and the access denied error that makes no sense at first glance.
AWS Identity and Access Management (IAM) controls who and what can use your AWS account. It holds the identities (users, groups and roles) and the policies that say which actions they may perform on which resources. Every request to an AWS API is checked against those policies before anything happens.
Yes. IAM users, roles, groups and policies come at no additional charge, and IAM Identity Center has no extra charge either. Some IAM Access Analyzer features are paid: in US East (N. Virginia), unused access analysis is $0.20 per role or user analyzed per month, internal access analysis is $9.00 per monitored resource per month, and custom policy checks are $0.0020 per API call.
Prefer roles. A role has no password or permanent key; whoever assumes it gets temporary credentials that expire. Lambda functions, EC2 instances, containers and CI pipelines should all use roles. IAM users with access keys are a last resort for systems outside AWS that cannot federate, and those keys should be narrow and rotated.
IAM is the permission engine inside each AWS account. IAM Identity Center sits on top and gives people one sign-in for all your accounts, using permission sets that it turns into roles in each account. It can use its own user directory or connect to an existing identity provider such as Microsoft Entra ID, Okta or Google Workspace.
Everything starts as denied. If any applicable policy has an explicit Deny that matches, the request is denied, full stop. Otherwise it needs a matching Allow, and in multi-account setups it must also fit inside service control policies, any permissions boundary and any session policy. A request that no policy mentions stays denied.
Something else is saying no. Common causes are a service control policy from AWS Organizations, a permissions boundary on the role, a bucket or KMS key policy that does not trust your role, a condition such as Region or MFA that the request fails, or the action needing a different resource ARN than the one in your policy. The error message often names the policy type that denied it.
Ideally they do not hold AWS credentials at all. Zoho CRM, Flow or Catalyst call an API Gateway endpoint, and a Lambda function with its own role does the AWS work. When a Zoho tool must read AWS directly, such as an Analytics import from S3, it gets a dedicated IAM user limited to one bucket prefix with keys rotated on a schedule.
For daily work, yes. Turn on MFA for the root user, delete any root access keys and keep the credentials somewhere only two trusted people can reach. A few tasks, like closing the account or changing some billing settings, still need root, so it should stay recoverable rather than forgotten.
The better question is whether the key needs to exist. Most can be replaced with roles. For the ones that stay, we rotate on a fixed calendar agreed with your team, alert on keys older than that, and use the credential report to catch keys that have not been used in months so they can be removed.
The first call is free. After it, the roles, permission sets, guardrails and Zoho connections we will build go into a BRD with one fixed price that you sign before work starts. Large multi-account estates may need a paid discovery phase first, quoted up front. IAM itself costs nothing on your AWS bill.
08Starting an IAM project
We ask for read-only access first and change nothing until the plan is signed. A single account usually scopes from the first call. Many accounts under AWS Organizations may need a paid discovery phase, quoted before it begins.
Changes roll out after sign-off, staging first. See how we work →
09Let’s talk
Book a free consultation with Elite Tech Global. We review your Zoho, AWS, Shopify or WordPress setup, show where AI / SI agents can save time, and agree the next step. If we work together, every requirement and a fixed price go into a signed BRD before the build starts.
Real people, one team. Led by co-founders Ikramul Karim and Khris Kakosimidi, and a 40+ member team across Zoho, AWS and AI.
Thanks, we’ve got it.
We’ll review your request and email you to set up your free consultation. Prefer to pick a time now?
Book a call