import { faLock, faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { Button, DeleteActionModal, EmptyState, Table, TableContainer, TableSkeleton, TBody, Td, THead, Tr } from "@app/components/v2"; import { OrgPermissionActions, OrgPermissionSubjects, useOrganization, useSubscription } from "@app/context"; import { withPermission } from "@app/hoc"; import { usePopUp } from "@app/hooks"; import { useGetExternalKmsList, useRemoveExternalKms } from "@app/hooks/api"; import { AddExternalKmsForm } from "./AddExternalKmsForm"; import { ExternalKmsItem } from "./ExternalKmsItem"; import { UpdateExternalKmsForm } from "./UpdateExternalKmsForm"; export const OrgEncryptionTab = withPermission( () => { const { currentOrg } = useOrganization(); const { subscription } = useSubscription(); const orgId = currentOrg?.id || ""; const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ "upgradePlan", "addExternalKms", "editExternalKms", "removeExternalKms" ] as const); const { data: externalKmsList, isPending: isExternalKmsListLoading } = useGetExternalKmsList(orgId); const { mutateAsync: removeExternalKms } = useRemoveExternalKms(currentOrg.id); const handleRemoveExternalKms = async () => { const { kmsId } = popUp?.removeExternalKms?.data as { kmsId: string; }; try { await removeExternalKms(kmsId); createNotification({ text: "Successfully deleted external KMS", type: "success" }); handlePopUpToggle("removeExternalKms", false); } catch (err) { console.error(err); } }; return (

Key Management System (KMS)

{(isAllowed) => ( )}

Encrypt your organization's data with external KMS.

{isExternalKmsListLoading && } {!isExternalKmsListLoading && externalKmsList && externalKmsList?.length === 0 && ( )} {!isExternalKmsListLoading && externalKmsList?.map((kms) => ( ))}
Provider Alias ID
handlePopUpToggle("upgradePlan", isOpen)} text="You can configure external KMS if you switch to Infisical's Enterprise plan." isEnterpriseFeature={popUp.upgradePlan.data?.isEnterpriseFeature} /> handlePopUpToggle("addExternalKms", state)} /> handlePopUpToggle("editExternalKms", state)} /> handlePopUpToggle("removeExternalKms", isOpen)} deleteKey="confirm" onDeleteApproved={handleRemoveExternalKms} />
); }, { action: OrgPermissionActions.Read, subject: OrgPermissionSubjects.Kms } );