Expand description
WAMI - Who Am I: Multicloud Identity and Access Management library for Rust
This library provides a multicloud implementation of Identity and Access Management (IAM), Security Token Service (STS), and Single Sign-On Admin operations. It’s designed to work across multiple cloud providers (AWS, GCP, Azure, and custom platforms) and can be used for testing, development, or as a unified identity layer for multicloud environments.
§Features
- 🌐 Multicloud Support: AWS, GCP, Azure, and custom identity providers
- IAM Operations: Complete user, group, role, and policy management
- STS Operations: Temporary credentials and identity inspection
- SSO Admin Operations: Permission sets, assignments, and instances
- Pluggable Storage: In-memory, database, or cloud-native backends
- Async API: All operations are asynchronous for better performance
- Type Safety: Strongly typed requests and responses
§Example
use wami::store::memory::InMemoryWamiStore;
use wami::store::traits::UserStore;
use wami::provider::{AwsProvider, CloudProvider};
use wami::wami::identity::user::builder::build_user;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize logging
env_logger::init();
// Initialize store
let mut store = InMemoryWamiStore::default();
// Create provider
let provider = AwsProvider::new();
// Build a user using pure functions
let user = build_user(
"alice".to_string(),
Some("/".to_string()),
&provider,
"123456789012",
);
// Store the user
let created_user = store.create_user(user).await?;
println!("Created user: {}", created_user.user_name);
println!("User ARN: {}", created_user.arn);
// Retrieve the user
let retrieved = store.get_user("alice").await?;
if let Some(user) = retrieved {
println!("Retrieved user: {}", user.user_name);
}
Ok(())
}Re-exports§
pub use error::AmiError;pub use error::Result;pub use types::AmiResponse;pub use types::AwsConfig;pub use types::PaginationParams;pub use types::PolicyDocument;pub use types::PolicyStatement;pub use types::Tag;pub use store::memory::InMemoryStore;pub use store::SsoAdminStore;pub use store::Store;pub use store::StsStore;pub use store::WamiStore;pub use provider::ProviderConfig;pub use service::AccessKeyService;pub use service::AccountAssignmentService;pub use service::ApplicationService;pub use service::AssumeRoleService;pub use service::CredentialReportService;pub use service::EvaluationService;pub use service::FederationService;pub use service::GroupService;pub use service::IdentityService;pub use service::InstanceService as SsoInstanceService;pub use service::LoginProfileService;pub use service::MfaDeviceService;pub use service::PermissionSetService;pub use service::PolicyService;pub use service::RoleService;pub use service::ServerCertificateService;pub use service::ServiceCredentialService;pub use service::ServiceLinkedRoleService;pub use service::SessionService;pub use service::SessionTokenService;pub use service::SigningCertificateService;pub use service::TenantService;pub use service::TrustedTokenIssuerService;pub use service::UserService;pub use wami::sso_admin;pub use wami::sts;pub use wami::tenant;pub use wami::identity::Group;pub use wami::identity::Role;pub use wami::identity::User;pub use wami::credentials::AccessKey;pub use wami::credentials::LoginProfile;pub use wami::credentials::MfaDevice;pub use wami::credentials::ServerCertificate;pub use wami::credentials::ServiceSpecificCredential;pub use wami::policies::Policy;pub use wami::reports::CredentialReport;pub use wami::sts::Credentials;pub use wami::sts::StsSession;pub use wami::tenant::check_tenant_permission;pub use wami::tenant::BillingInfo;pub use wami::tenant::QuotaMode;pub use wami::tenant::Tenant;pub use wami::tenant::TenantAction;pub use wami::tenant::TenantId;pub use wami::tenant::TenantQuotas;pub use wami::tenant::TenantStatus;pub use wami::tenant::TenantType;pub use wami::tenant::TenantUsage;pub use wami::credentials::access_key::AccessKeyLastUsed;pub use wami::credentials::access_key::CreateAccessKeyRequest;pub use wami::credentials::access_key::ListAccessKeysRequest;pub use wami::credentials::access_key::ListAccessKeysResponse;pub use wami::credentials::access_key::UpdateAccessKeyRequest;pub use wami::credentials::login_profile::CreateLoginProfileRequest;pub use wami::credentials::login_profile::GetLoginProfileRequest;pub use wami::credentials::login_profile::UpdateLoginProfileRequest;pub use wami::credentials::mfa_device::EnableMfaDeviceRequest;pub use wami::credentials::mfa_device::ListMfaDevicesRequest;pub use wami::credentials::server_certificate::DeleteServerCertificateRequest;pub use wami::credentials::server_certificate::GetServerCertificateRequest;pub use wami::credentials::server_certificate::GetServerCertificateResponse;pub use wami::credentials::server_certificate::ListServerCertificatesRequest;pub use wami::credentials::server_certificate::ListServerCertificatesResponse;pub use wami::credentials::server_certificate::UpdateServerCertificateRequest;pub use wami::credentials::server_certificate::UploadServerCertificateRequest;pub use wami::credentials::server_certificate::UploadServerCertificateResponse;pub use wami::credentials::service_credential::CreateServiceSpecificCredentialRequest;pub use wami::credentials::service_credential::CreateServiceSpecificCredentialResponse;pub use wami::credentials::service_credential::DeleteServiceSpecificCredentialRequest;pub use wami::credentials::service_credential::ListServiceSpecificCredentialsRequest;pub use wami::credentials::service_credential::ListServiceSpecificCredentialsResponse;pub use wami::credentials::service_credential::ResetServiceSpecificCredentialRequest;pub use wami::credentials::service_credential::ResetServiceSpecificCredentialResponse;pub use wami::credentials::service_credential::UpdateServiceSpecificCredentialRequest;pub use wami::credentials::signing_certificate::CertificateStatus;pub use wami::credentials::signing_certificate::DeleteSigningCertificateRequest;pub use wami::credentials::signing_certificate::ListSigningCertificatesRequest;pub use wami::credentials::signing_certificate::ListSigningCertificatesResponse;pub use wami::credentials::signing_certificate::SigningCertificate;pub use wami::credentials::signing_certificate::UpdateSigningCertificateRequest;pub use wami::credentials::signing_certificate::UploadSigningCertificateRequest;pub use wami::credentials::signing_certificate::UploadSigningCertificateResponse;pub use wami::identity::group::CreateGroupRequest;pub use wami::identity::group::ListGroupsRequest;pub use wami::identity::group::ListGroupsResponse;pub use wami::identity::group::UpdateGroupRequest;pub use wami::identity::role::CreateRoleRequest;pub use wami::identity::role::ListRolesRequest;pub use wami::identity::role::ListRolesResponse;pub use wami::identity::role::UpdateRoleRequest;pub use wami::identity::service_linked_role::CreateServiceLinkedRoleRequest;pub use wami::identity::service_linked_role::CreateServiceLinkedRoleResponse;pub use wami::identity::service_linked_role::DeleteServiceLinkedRoleRequest;pub use wami::identity::service_linked_role::DeleteServiceLinkedRoleResponse;pub use wami::identity::service_linked_role::DeletionTaskFailureReason;pub use wami::identity::service_linked_role::DeletionTaskInfo;pub use wami::identity::service_linked_role::DeletionTaskStatus;pub use wami::identity::service_linked_role::GetServiceLinkedRoleDeletionStatusRequest;pub use wami::identity::service_linked_role::GetServiceLinkedRoleDeletionStatusResponse;pub use wami::identity::service_linked_role::RoleUsageType;pub use wami::identity::user::CreateUserRequest;pub use wami::identity::user::ListUsersRequest;pub use wami::identity::user::ListUsersResponse;pub use wami::identity::user::UpdateUserRequest;pub use wami::policies::evaluation::ContextEntry;pub use wami::policies::evaluation::EvaluationResult;pub use wami::policies::evaluation::SimulateCustomPolicyRequest;pub use wami::policies::evaluation::SimulatePolicyResponse;pub use wami::policies::evaluation::SimulatePrincipalPolicyRequest;pub use wami::policies::evaluation::StatementMatch;pub use wami::policies::policy::CreatePolicyRequest;pub use wami::policies::policy::ListPoliciesRequest;pub use wami::policies::policy::ListPoliciesResponse;pub use wami::policies::policy::UpdatePolicyRequest;pub use wami::reports::credential_report::AccountSummaryMap;pub use wami::reports::credential_report::CredentialReport as CredentialReportType;pub use wami::reports::credential_report::GenerateCredentialReportRequest;pub use wami::reports::credential_report::GenerateCredentialReportResponse;pub use wami::reports::credential_report::GetAccountSummaryRequest;pub use wami::reports::credential_report::GetAccountSummaryResponse;pub use wami::reports::credential_report::GetCredentialReportRequest;pub use wami::reports::credential_report::GetCredentialReportResponse;pub use wami::reports::credential_report::ReportState;pub use wami::tags::ListResourceTagsRequest;pub use wami::tags::TagResourceRequest;pub use wami::tags::UntagResourceRequest;pub use sts::AssumeRoleRequest;pub use sts::GetSessionTokenRequest;
Modules§
- error
- provider
- Cloud Provider Abstraction
- service
- Service Layer
- store
- Store Module
- types
- wami
- WAMI - Web-compatible Access Management Interface
Functions§
- create_
memory_ store - Create a new in-memory store