This commit is contained in:
Tuan Dang
2023-09-04 12:49:11 +01:00
11 changed files with 29 additions and 28 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ assignees: ''
--- ---
### Feature description ### Feature description
A clear and concise description of what the the feature should be. A clear and concise description of what the feature should be.
### Why would it be useful? ### Why would it be useful?
Why would this feature be useful for Infisical users? Why would this feature be useful for Infisical users?
+5 -2
View File
@@ -509,7 +509,7 @@ export const getSecretsHelper = async ({
throw UnauthorizedRequestError({ message: "Folder Permission Denied" }); throw UnauthorizedRequestError({ message: "Folder Permission Denied" });
} }
} }
if (!folderId) { if (!folderId) {
folderId = await getFolderIdFromServiceToken(workspaceId, environment, secretPath); folderId = await getFolderIdFromServiceToken(workspaceId, environment, secretPath);
} }
@@ -583,7 +583,10 @@ export const getSecretsHelper = async ({
} }
} }
if (postHogClient) { const numberOfSignupSecrets = (secrets.filter((secret) => secret?.metadata?.source === "signup")).length;
const atLeastOneNonSignUpSecret = (secrets.length - numberOfSignupSecrets > 0)
if (postHogClient && atLeastOneNonSignUpSecret) {
const shouldCapture = authData.userAgent !== K8_USER_AGENT_NAME || shouldRecordK8Event; const shouldCapture = authData.userAgent !== K8_USER_AGENT_NAME || shouldRecordK8Event;
const approximateForNoneCapturedEvents = secrets.length * 10 const approximateForNoneCapturedEvents = secrets.length * 10
+7 -5
View File
@@ -691,15 +691,17 @@ const syncSecretsAWSParameterStore = async ({
const parameterList = (await ssm.getParametersByPath(params).promise()).Parameters; const parameterList = (await ssm.getParametersByPath(params).promise()).Parameters;
let awsParameterStoreSecretsObj: { let awsParameterStoreSecretsObj: {
[key: string]: any; // TODO: fix type [key: string]: any;
} = {}; } = {};
if (parameterList) { if (parameterList) {
awsParameterStoreSecretsObj = parameterList.reduce( awsParameterStoreSecretsObj = parameterList.reduce(
(obj: any, secret: any) => ({ (obj: any, secret: any) => {
...obj, return ({
[secret.Name.split("/").pop()]: secret ...obj,
}), [secret.Name.substring(integration.path.length)]: secret
});
},
{} {}
); );
} }
@@ -15,7 +15,7 @@ Prerequisites:
## Dockerfile Modification ## Dockerfile Modification
Follow the instruction for your specific Linux distrubtion to add the Infisical CLI to your Dockerfile. Follow the instructions for your specific Linux distribution to add the Infisical CLI to your Dockerfile.
<Tabs> <Tabs>
<Tab title="Alpine"> <Tab title="Alpine">
@@ -87,7 +87,7 @@ Prerequisites:
## Dockerfile Modifications ## Dockerfile Modifications
Follow the instruction for your specific Linux distributions to add the Infisical CLI to your Dockerfiles. Follow the instructions for your specific Linux distributions to add the Infisical CLI to your Dockerfiles.
<Tabs> <Tabs>
<Tab title="Alpine"> <Tab title="Alpine">
@@ -182,4 +182,4 @@ Prerequisites:
See also: See also:
- [Documentation for Docker](/integrations/platforms/docker) - [Documentation for Docker](/integrations/platforms/docker)
- [Documentation for Docker Compose](/integrations/platforms/docker-compose) - [Documentation for Docker Compose](/integrations/platforms/docker-compose)
+3 -3
View File
@@ -28,7 +28,7 @@ Now that we've created a project and added a secret to its development environme
## Create a Node app ## Create a Node app
For this demonstration, we use a minimal Express application. However, the same principles will apply for any Node application such as those built on Koa or Fastify. For this demonstration, we use a minimal Express application. However, the same principles will apply to any Node application such as those built on Koa or Fastify.
### Create an Express app ### Create an Express app
@@ -107,7 +107,7 @@ At this stage, you know how to fetch secrets from Infisical back to your Node ap
Although the SDK requires you to pass in a token, it enables greater efficiency and security Although the SDK requires you to pass in a token, it enables greater efficiency and security
than if you managed dozens of secrets yourself without it. Here're some benefits: than if you managed dozens of secrets yourself without it. Here're some benefits:
- You always pull in the right secrets because they're fetched on demand from a centralize source that is Infisical. - You always pull in the right secrets because they're fetched on demand from a centralized source that is Infisical.
- You can use the Infisical which comes with tons of benefits like secret versioning, access controls, audit logs, etc. - You can use the Infisical which comes with tons of benefits like secret versioning, access controls, audit logs, etc.
- You now risk leaking one token that can be revoked instead of dozens of raw secrets. - You now risk leaking one token that can be revoked instead of dozens of raw secrets.
@@ -118,4 +118,4 @@ At this stage, you know how to fetch secrets from Infisical back to your Node ap
See also: See also:
- Explore the [Node SDK](https://github.com/Infisical/infisical-node) - Explore the [Node SDK](https://github.com/Infisical/infisical-node)
+2 -2
View File
@@ -27,7 +27,7 @@ Now that we've created a project and added a secret to its development environme
## Create a Python app ## Create a Python app
For this demonstration, we use a minimal Flask application. However, the same principles will apply for any Python application such as those built with Django. For this demonstration, we use a minimal Flask application. However, the same principles will apply to any Python application such as those built with Django.
### Create a Flask app ### Create a Flask app
@@ -103,7 +103,7 @@ At this stage, you know how to fetch secrets from Infisical back to your Python
Although the SDK requires you to pass in a token, it enables greater efficiency and security Although the SDK requires you to pass in a token, it enables greater efficiency and security
than if you managed dozens of secrets yourself without it. Here're some benefits: than if you managed dozens of secrets yourself without it. Here're some benefits:
- You always pull in the right secrets because they're fetched on demand from a centralize source that is Infisical. - You always pull in the right secrets because they're fetched on demand from a centralized source that is Infisical.
- You can use the Infisical which comes with tons of benefits like secret versioning, access controls, audit logs, etc. - You can use the Infisical which comes with tons of benefits like secret versioning, access controls, audit logs, etc.
- You now risk leaking one token that can be revoked instead of dozens of raw secrets. - You now risk leaking one token that can be revoked instead of dozens of raw secrets.
+1 -1
View File
@@ -4,7 +4,7 @@ description: "Organize your secrets with folders"
--- ---
Folders provide a powerful and intuitive way to structure your secrets. Folders provide a powerful and intuitive way to structure your secrets.
They offer a system to keep your secrets organized and easily accessible, which becomes increasingly important as your collection of secrets grow. They offer a system to keep your secrets organized and easily accessible, which becomes increasingly important as your collection of secrets grows.
With folders in Infisical, you can now create a hierarchy of folders to organize your secrets, mirroring your application's architecture or any logical grouping that suits your needs. With folders in Infisical, you can now create a hierarchy of folders to organize your secrets, mirroring your application's architecture or any logical grouping that suits your needs.
Whether you follow a microservices architecture or work with monorepos, folders make it simpler to locate, manage and collaborate between teams. Whether you follow a microservices architecture or work with monorepos, folders make it simpler to locate, manage and collaborate between teams.
@@ -175,7 +175,7 @@ export const SecretDropzone = ({
e.dataTransfer.dropEffect = "copy"; e.dataTransfer.dropEffect = "copy";
setDragActive.off(); setDragActive.off();
parseFile(e.dataTransfer.files[0]); parseFile(e.dataTransfer.files[0], e.dataTransfer?.files?.[0]?.type === "application/json");
}; };
const handleFileUpload = (e: ChangeEvent<HTMLInputElement>) => { const handleFileUpload = (e: ChangeEvent<HTMLInputElement>) => {
@@ -197,7 +197,7 @@ export const WebhooksTab = () => {
<div className="text-xs"> <div className="text-xs">
<div> <div>
Updated At:{" "} Updated At:{" "}
{format(new Date(updatedAt), "YYYY-MM-DD, hh:mm aaa")} {format(new Date(updatedAt), "yyyy-MM-dd, hh:mm aaa")}
</div> </div>
{lastRunErrorMessage && ( {lastRunErrorMessage && (
<div className="mt-2 text-red"> <div className="mt-2 text-red">
+1 -1
View File
@@ -13,7 +13,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.2.0 version: 0.2.1
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
@@ -57,15 +57,13 @@ spec:
env: env:
- name: KUBERNETES_CLUSTER_DOMAIN - name: KUBERNETES_CLUSTER_DOMAIN
value: {{ .Values.kubernetesClusterDomain }} value: {{ .Values.kubernetesClusterDomain }}
image: {{ .Values.controllerManager.kubeRbacProxy.image.repository }}:{{ .Values.controllerManager.kubeRbacProxy.image.tag image: {{ .Values.controllerManager.kubeRbacProxy.image.repository }}:{{ .Values.controllerManager.kubeRbacProxy.image.tag | default .Chart.AppVersion }}
| default .Chart.AppVersion }}
name: kube-rbac-proxy name: kube-rbac-proxy
ports: ports:
- containerPort: 8443 - containerPort: 8443
name: https name: https
protocol: TCP protocol: TCP
resources: {{- toYaml .Values.controllerManager.kubeRbacProxy.resources | nindent resources: {{- toYaml .Values.controllerManager.kubeRbacProxy.resources | nindent 10 }}
10 }}
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
capabilities: capabilities:
@@ -80,8 +78,7 @@ spec:
env: env:
- name: KUBERNETES_CLUSTER_DOMAIN - name: KUBERNETES_CLUSTER_DOMAIN
value: {{ .Values.kubernetesClusterDomain }} value: {{ .Values.kubernetesClusterDomain }}
image: {{ .Values.controllerManager.manager.image.repository }}:{{ .Values.controllerManager.manager.image.tag image: {{ .Values.controllerManager.manager.image.repository }}:{{ .Values.controllerManager.manager.image.tag | default .Chart.AppVersion }}
| default .Chart.AppVersion }}
livenessProbe: livenessProbe:
httpGet: httpGet:
path: /healthz path: /healthz
@@ -95,8 +92,7 @@ spec:
port: 8081 port: 8081
initialDelaySeconds: 5 initialDelaySeconds: 5
periodSeconds: 10 periodSeconds: 10
resources: {{- toYaml .Values.controllerManager.manager.resources | nindent 10 resources: {{- toYaml .Values.controllerManager.manager.resources | nindent 10 }}
}}
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
capabilities: capabilities: