Merge pull request #3775 from Infisical/ENG-2861

feat(machine-identity): Alibaba Cloud
This commit is contained in:
x032205
2025-06-12 13:57:14 -04:00
committed by GitHub
42 changed files with 1875 additions and 0 deletions
@@ -5,6 +5,7 @@ export const identityAuthToNameMap: { [I in IdentityAuthMethod]: string } = {
[IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth",
[IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes Auth",
[IdentityAuthMethod.GCP_AUTH]: "GCP Auth",
[IdentityAuthMethod.ALICLOUD_AUTH]: "Alibaba Cloud Auth",
[IdentityAuthMethod.AWS_AUTH]: "AWS Auth",
[IdentityAuthMethod.AZURE_AUTH]: "Azure Auth",
[IdentityAuthMethod.OCI_AUTH]: "OCI Auth",
@@ -3,6 +3,7 @@ export enum IdentityAuthMethod {
UNIVERSAL_AUTH = "universal-auth",
KUBERNETES_AUTH = "kubernetes-auth",
GCP_AUTH = "gcp-auth",
ALICLOUD_AUTH = "alicloud-auth",
AWS_AUTH = "aws-auth",
AZURE_AUTH = "azure-auth",
OCI_AUTH = "oci-auth",
@@ -5,6 +5,7 @@ import { apiRequest } from "@app/config/request";
import { organizationKeys } from "../organization/queries";
import { identitiesKeys } from "./queries";
import {
AddIdentityAliCloudAuthDTO,
AddIdentityAwsAuthDTO,
AddIdentityAzureAuthDTO,
AddIdentityGcpAuthDTO,
@@ -21,6 +22,7 @@ import {
CreateIdentityUniversalAuthClientSecretRes,
CreateTokenIdentityTokenAuthDTO,
CreateTokenIdentityTokenAuthRes,
DeleteIdentityAliCloudAuthDTO,
DeleteIdentityAwsAuthDTO,
DeleteIdentityAzureAuthDTO,
DeleteIdentityDTO,
@@ -35,6 +37,7 @@ import {
DeleteIdentityUniversalAuthDTO,
Identity,
IdentityAccessToken,
IdentityAliCloudAuth,
IdentityAwsAuth,
IdentityAzureAuth,
IdentityGcpAuth,
@@ -47,6 +50,7 @@ import {
IdentityUniversalAuth,
RevokeTokenDTO,
RevokeTokenRes,
UpdateIdentityAliCloudAuthDTO,
UpdateIdentityAwsAuthDTO,
UpdateIdentityAzureAuthDTO,
UpdateIdentityDTO,
@@ -553,6 +557,103 @@ export const useDeleteIdentityOciAuth = () => {
});
};
export const useAddIdentityAliCloudAuth = () => {
const queryClient = useQueryClient();
return useMutation<IdentityAliCloudAuth, object, AddIdentityAliCloudAuthDTO>({
mutationFn: async ({
identityId,
allowedArns,
accessTokenTTL,
accessTokenMaxTTL,
accessTokenNumUsesLimit,
accessTokenTrustedIps
}) => {
const {
data: { identityAliCloudAuth }
} = await apiRequest.post<{ identityAliCloudAuth: IdentityAliCloudAuth }>(
`/api/v1/auth/alicloud-auth/identities/${identityId}`,
{
allowedArns,
accessTokenTTL,
accessTokenMaxTTL,
accessTokenNumUsesLimit,
accessTokenTrustedIps
}
);
return identityAliCloudAuth;
},
onSuccess: (_, { identityId, organizationId }) => {
queryClient.invalidateQueries({
queryKey: organizationKeys.getOrgIdentityMemberships(organizationId)
});
queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityById(identityId) });
queryClient.invalidateQueries({
queryKey: identitiesKeys.getIdentityAliCloudAuth(identityId)
});
}
});
};
export const useUpdateIdentityAliCloudAuth = () => {
const queryClient = useQueryClient();
return useMutation<IdentityAliCloudAuth, object, UpdateIdentityAliCloudAuthDTO>({
mutationFn: async ({
identityId,
allowedArns,
accessTokenTTL,
accessTokenMaxTTL,
accessTokenNumUsesLimit,
accessTokenTrustedIps
}) => {
const {
data: { identityAliCloudAuth }
} = await apiRequest.patch<{ identityAliCloudAuth: IdentityAliCloudAuth }>(
`/api/v1/auth/alicloud-auth/identities/${identityId}`,
{
allowedArns,
accessTokenTTL,
accessTokenMaxTTL,
accessTokenNumUsesLimit,
accessTokenTrustedIps
}
);
return identityAliCloudAuth;
},
onSuccess: (_, { identityId, organizationId }) => {
queryClient.invalidateQueries({
queryKey: organizationKeys.getOrgIdentityMemberships(organizationId)
});
queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityById(identityId) });
queryClient.invalidateQueries({
queryKey: identitiesKeys.getIdentityAliCloudAuth(identityId)
});
}
});
};
export const useDeleteIdentityAliCloudAuth = () => {
const queryClient = useQueryClient();
return useMutation<IdentityAliCloudAuth, object, DeleteIdentityAliCloudAuthDTO>({
mutationFn: async ({ identityId }) => {
const {
data: { identityAliCloudAuth }
} = await apiRequest.delete(`/api/v1/auth/alicloud-auth/identities/${identityId}`);
return identityAliCloudAuth;
},
onSuccess: (_, { organizationId, identityId }) => {
queryClient.invalidateQueries({
queryKey: organizationKeys.getOrgIdentityMemberships(organizationId)
});
queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityById(identityId) });
queryClient.invalidateQueries({
queryKey: identitiesKeys.getIdentityAliCloudAuth(identityId)
});
}
});
};
export const useUpdateIdentityOidcAuth = () => {
const queryClient = useQueryClient();
return useMutation<IdentityOidcAuth, object, UpdateIdentityOidcAuthDTO>({
@@ -6,6 +6,7 @@ import { TReactQueryOptions } from "@app/types/reactQuery";
import {
ClientSecretData,
IdentityAccessToken,
IdentityAliCloudAuth,
IdentityAwsAuth,
IdentityAzureAuth,
IdentityGcpAuth,
@@ -33,6 +34,8 @@ export const identitiesKeys = {
getIdentityGcpAuth: (identityId: string) => [{ identityId }, "identity-gcp-auth"] as const,
getIdentityOidcAuth: (identityId: string) => [{ identityId }, "identity-oidc-auth"] as const,
getIdentityAwsAuth: (identityId: string) => [{ identityId }, "identity-aws-auth"] as const,
getIdentityAliCloudAuth: (identityId: string) =>
[{ identityId }, "identity-alicloud-auth"] as const,
getIdentityOciAuth: (identityId: string) => [{ identityId }, "identity-oci-auth"] as const,
getIdentityAzureAuth: (identityId: string) => [{ identityId }, "identity-azure-auth"] as const,
getIdentityTokenAuth: (identityId: string) => [{ identityId }, "identity-token-auth"] as const,
@@ -193,6 +196,27 @@ export const useGetIdentityOciAuth = (
});
};
export const useGetIdentityAliCloudAuth = (
identityId: string,
options?: TReactQueryOptions["options"]
) => {
return useQuery({
queryKey: identitiesKeys.getIdentityAliCloudAuth(identityId),
queryFn: async () => {
const {
data: { identityAliCloudAuth }
} = await apiRequest.get<{ identityAliCloudAuth: IdentityAliCloudAuth }>(
`/api/v1/auth/alicloud-auth/identities/${identityId}`
);
return identityAliCloudAuth;
},
staleTime: 0,
gcTime: 0,
...options,
enabled: Boolean(identityId) && (options?.enabled ?? true)
});
};
export const useGetIdentityAzureAuth = (
identityId: string,
options?: TReactQueryOptions["options"]
@@ -293,6 +293,45 @@ export type DeleteIdentityAwsAuthDTO = {
identityId: string;
};
export type IdentityAliCloudAuth = {
identityId: string;
type: "iam";
allowedArns: string;
accessTokenTTL: number;
accessTokenMaxTTL: number;
accessTokenNumUsesLimit: number;
accessTokenTrustedIps: IdentityTrustedIp[];
};
export type AddIdentityAliCloudAuthDTO = {
organizationId: string;
identityId: string;
allowedArns: string;
accessTokenTTL: number;
accessTokenMaxTTL: number;
accessTokenNumUsesLimit: number;
accessTokenTrustedIps: {
ipAddress: string;
}[];
};
export type UpdateIdentityAliCloudAuthDTO = {
organizationId: string;
identityId: string;
allowedArns: string;
accessTokenTTL?: number;
accessTokenMaxTTL?: number;
accessTokenNumUsesLimit?: number;
accessTokenTrustedIps?: {
ipAddress: string;
}[];
};
export type DeleteIdentityAliCloudAuthDTO = {
organizationId: string;
identityId: string;
};
export type IdentityOciAuth = {
identityId: string;
type: "iam";