pub struct Iam { /* private fields */ }Expand description
Implements a client for the Identity and Access Management (IAM) API.
§Example
let client = Iam::builder().build().await?;
// use `client` to make requests to the Identity and Access Management (IAM) API.§Service Description
Creates and manages Identity and Access Management (IAM) resources.
You can use this service to work with all of the following resources:
- Service accounts, which identify an application or a virtual machine (VM) instance rather than a person
- Service account keys, which service accounts use to authenticate with Google APIs
- IAM policies for service accounts, which specify the roles that a principal has for the service account
- IAM custom roles, which help you limit the number of permissions that you grant to principals
In addition, you can use this service to complete the following tasks, among others:
- Test whether a service account can use specific permissions
- Check which roles you can grant for a specific resource
- Lint, or validate, condition expressions in an IAM policy
When you read data from the IAM API, each read is eventually consistent. In other words, if you write data with the IAM API, then immediately read that data, the read operation might return an older version of the data. To deal with this behavior, your application can retry the request with truncated exponential backoff.
In contrast, writing data to the IAM API is sequentially consistent. In other words, write operations are always processed in the order in which they were received.
§Configuration
To configure Iam use the with_* methods in the type returned
by builder(). The default configuration should
work for most applications. Common configuration changes include
- with_endpoint(): by default this client uses the global default endpoint
(
https://iam.googleapis.com). Applications using regional endpoints or running in restricted networks (e.g. a network configured override this default. - with_credentials(): by default this client uses Application Default Credentials. Applications using custom authentication may need to override this default.
§Pooling and Cloning
Iam holds a connection pool internally, it is advised to
create one and the reuse it. You do not need to wrap Iam in
an Rc or Arc to reuse it, because it
already uses an Arc internally.
Implementations§
Source§impl Iam
impl Iam
Sourcepub fn builder() -> ClientBuilder
pub fn builder() -> ClientBuilder
Returns a builder for Iam.
let client = Iam::builder().build().await?;Sourcepub fn from_stub<T>(stub: T) -> Selfwhere
T: Iam + 'static,
pub fn from_stub<T>(stub: T) -> Selfwhere
T: Iam + 'static,
Creates a new client from the provided stub.
The most common case for calling this function is in tests mocking the client’s behavior.
Sourcepub fn list_service_accounts(&self) -> ListServiceAccounts
pub fn list_service_accounts(&self) -> ListServiceAccounts
Lists every ServiceAccount that belongs to a specific project.
Sourcepub fn get_service_account(&self) -> GetServiceAccount
pub fn get_service_account(&self) -> GetServiceAccount
Gets a ServiceAccount.
Sourcepub fn create_service_account(&self) -> CreateServiceAccount
pub fn create_service_account(&self) -> CreateServiceAccount
Creates a ServiceAccount.
Sourcepub fn update_service_account(&self) -> UpdateServiceAccount
pub fn update_service_account(&self) -> UpdateServiceAccount
Note: We are in the process of deprecating this method. Use PatchServiceAccount instead.
Updates a ServiceAccount.
You can update only the display_name field.
Sourcepub fn patch_service_account(&self) -> PatchServiceAccount
pub fn patch_service_account(&self) -> PatchServiceAccount
Patches a ServiceAccount.
Sourcepub fn delete_service_account(&self) -> DeleteServiceAccount
pub fn delete_service_account(&self) -> DeleteServiceAccount
Deletes a ServiceAccount.
Warning: After you delete a service account, you might not be able to undelete it. If you know that you need to re-enable the service account in the future, use DisableServiceAccount instead.
If you delete a service account, IAM permanently removes the service account 30 days later. Google Cloud cannot recover the service account after it is permanently removed, even if you file a support request.
To help avoid unplanned outages, we recommend that you disable the service account before you delete it. Use DisableServiceAccount to disable the service account, then wait at least 24 hours and watch for unintended consequences. If there are no unintended consequences, you can delete the service account.
Sourcepub fn undelete_service_account(&self) -> UndeleteServiceAccount
pub fn undelete_service_account(&self) -> UndeleteServiceAccount
Restores a deleted ServiceAccount.
Important: It is not always possible to restore a deleted service account. Use this method only as a last resort.
After you delete a service account, IAM permanently removes the service account 30 days later. There is no way to restore a deleted service account that has been permanently removed.
Sourcepub fn enable_service_account(&self) -> EnableServiceAccount
pub fn enable_service_account(&self) -> EnableServiceAccount
Enables a ServiceAccount that was disabled by DisableServiceAccount.
If the service account is already enabled, then this method has no effect.
If the service account was disabled by other means—for example, if Google disabled the service account because it was compromised—you cannot use this method to enable the service account.
Sourcepub fn disable_service_account(&self) -> DisableServiceAccount
pub fn disable_service_account(&self) -> DisableServiceAccount
Disables a ServiceAccount immediately.
If an application uses the service account to authenticate, that application can no longer call Google APIs or access Google Cloud resources. Existing access tokens for the service account are rejected, and requests for new access tokens will fail.
To re-enable the service account, use EnableServiceAccount. After you re-enable the service account, its existing access tokens will be accepted, and you can request new access tokens.
To help avoid unplanned outages, we recommend that you disable the service account before you delete it. Use this method to disable the service account, then wait at least 24 hours and watch for unintended consequences. If there are no unintended consequences, you can delete the service account with DeleteServiceAccount.
Sourcepub fn list_service_account_keys(&self) -> ListServiceAccountKeys
pub fn list_service_account_keys(&self) -> ListServiceAccountKeys
Lists every ServiceAccountKey for a service account.
Sourcepub fn get_service_account_key(&self) -> GetServiceAccountKey
pub fn get_service_account_key(&self) -> GetServiceAccountKey
Gets a ServiceAccountKey.
Sourcepub fn create_service_account_key(&self) -> CreateServiceAccountKey
pub fn create_service_account_key(&self) -> CreateServiceAccountKey
Creates a ServiceAccountKey.
Sourcepub fn upload_service_account_key(&self) -> UploadServiceAccountKey
pub fn upload_service_account_key(&self) -> UploadServiceAccountKey
Uploads the public key portion of a key pair that you manage, and associates the public key with a ServiceAccount.
After you upload the public key, you can use the private key from the key pair as a service account key.
Sourcepub fn delete_service_account_key(&self) -> DeleteServiceAccountKey
pub fn delete_service_account_key(&self) -> DeleteServiceAccountKey
Deletes a ServiceAccountKey. Deleting a service account key does not revoke short-lived credentials that have been issued based on the service account key.
Sourcepub fn disable_service_account_key(&self) -> DisableServiceAccountKey
pub fn disable_service_account_key(&self) -> DisableServiceAccountKey
Disable a ServiceAccountKey. A disabled service account key can be re-enabled with EnableServiceAccountKey.
Sourcepub fn enable_service_account_key(&self) -> EnableServiceAccountKey
pub fn enable_service_account_key(&self) -> EnableServiceAccountKey
Enable a ServiceAccountKey.
Sourcepub fn sign_blob(&self) -> SignBlob
👎Deprecated
pub fn sign_blob(&self) -> SignBlob
Note: This method is deprecated. Use the
signBlob
method in the IAM Service Account Credentials API instead. If you currently
use this method, see the migration
guide for
instructions.
Signs a blob using the system-managed private key for a ServiceAccount.
Sourcepub fn sign_jwt(&self) -> SignJwt
👎Deprecated
pub fn sign_jwt(&self) -> SignJwt
Note: This method is deprecated. Use the
signJwt
method in the IAM Service Account Credentials API instead. If you currently
use this method, see the migration
guide for
instructions.
Signs a JSON Web Token (JWT) using the system-managed private key for a ServiceAccount.
Sourcepub fn get_iam_policy(&self) -> GetIamPolicy
pub fn get_iam_policy(&self) -> GetIamPolicy
Gets the IAM policy that is attached to a ServiceAccount. This IAM policy specifies which principals have access to the service account.
This method does not tell you whether the service account has been granted
any roles on other resources. To check whether a service account has role
grants on a resource, use the getIamPolicy method for that resource. For
example, to view the role grants for a project, call the Resource Manager
API’s
projects.getIamPolicy
method.
Sourcepub fn set_iam_policy(&self) -> SetIamPolicy
pub fn set_iam_policy(&self) -> SetIamPolicy
Sets the IAM policy that is attached to a ServiceAccount.
Use this method to grant or revoke access to the service account. For example, you could grant a principal the ability to impersonate the service account.
This method does not enable the service account to access other resources. To grant roles to a service account on a resource, follow these steps:
- Call the resource’s
getIamPolicymethod to get its current IAM policy. - Edit the policy so that it binds the service account to an IAM role for the resource.
- Call the resource’s
setIamPolicymethod to update its IAM policy.
For detailed instructions, see Manage access to project, folders, and organizations or Manage access to other resources.
Sourcepub fn test_iam_permissions(&self) -> TestIamPermissions
pub fn test_iam_permissions(&self) -> TestIamPermissions
Tests whether the caller has the specified permissions on a ServiceAccount.
Sourcepub fn query_grantable_roles(&self) -> QueryGrantableRoles
pub fn query_grantable_roles(&self) -> QueryGrantableRoles
Lists roles that can be granted on a Google Cloud resource. A role is grantable if the IAM policy for the resource can contain bindings to the role.
Sourcepub fn list_roles(&self) -> ListRoles
pub fn list_roles(&self) -> ListRoles
Lists every predefined Role that IAM supports, or every custom role that is defined for an organization or project.
Sourcepub fn create_role(&self) -> CreateRole
pub fn create_role(&self) -> CreateRole
Creates a new custom Role.
Sourcepub fn update_role(&self) -> UpdateRole
pub fn update_role(&self) -> UpdateRole
Updates the definition of a custom Role.
Sourcepub fn delete_role(&self) -> DeleteRole
pub fn delete_role(&self) -> DeleteRole
Deletes a custom Role.
When you delete a custom role, the following changes occur immediately:
- You cannot bind a principal to the custom role in an IAM Policy.
- Existing bindings to the custom role are not changed, but they have no effect.
- By default, the response from ListRoles does not include the custom role.
You have 7 days to undelete the custom role. After 7 days, the following changes occur:
- The custom role is permanently deleted and cannot be recovered.
- If an IAM policy contains a binding to the custom role, the binding is permanently removed.
Sourcepub fn undelete_role(&self) -> UndeleteRole
pub fn undelete_role(&self) -> UndeleteRole
Undeletes a custom Role.
Sourcepub fn query_testable_permissions(&self) -> QueryTestablePermissions
pub fn query_testable_permissions(&self) -> QueryTestablePermissions
Lists every permission that you can test on a resource. A permission is testable if you can check whether a principal has that permission on the resource.
Sourcepub fn query_auditable_services(&self) -> QueryAuditableServices
pub fn query_auditable_services(&self) -> QueryAuditableServices
Returns a list of services that allow you to opt into audit logs that are not generated by default.
To learn more about audit logs, see the Logging documentation.
Sourcepub fn lint_policy(&self) -> LintPolicy
pub fn lint_policy(&self) -> LintPolicy
Lints, or validates, an IAM policy. Currently checks the google.iam.v1.Binding.condition field, which contains a condition expression for a role binding.
Successful calls to this method always return an HTTP 200 OK status code,
even if the linter detects an issue in the IAM policy.