Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Airtable Analyzer for Personal Access Tokens #3941

Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
added airtable personal access token analyzer
  • Loading branch information
nabeelalam committed Feb 26, 2025
commit ca91b0b4ebbe8942231b24c54e9dd6be3916494b
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//go:generate generate_permissions permissions.yaml permissions.go airtable
package airtable
package airtableoauth

import (
"encoding/json"
@@ -21,7 +21,7 @@ type Analyzer struct {
Cfg *config.Config
}

func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeAirtable }
func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeAirtableOAuth }

type AirtableUserInfo struct {
ID string `json:"id"`
@@ -139,7 +139,7 @@ func mapToAnalyzerResult(userInfo *AirtableUserInfo, basesInfo *AirtableBases) *
}

result := analyzers.AnalyzerResult{
AnalyzerType: analyzers.AnalyzerTypeAirtable,
AnalyzerType: analyzers.AnalyzerTypeAirtableOAuth,
}
var permissions []analyzers.Permission
for _, scope := range userInfo.Scopes {
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package airtable
package airtableoauth

import (
_ "embed"
171 changes: 171 additions & 0 deletions pkg/analyzer/analyzers/airtableoauth/permissions.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

143 changes: 143 additions & 0 deletions pkg/analyzer/analyzers/airtableoauth/scopes.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
package airtableoauth

var scope_mapping = map[string][]string{
// Basic Scopes
"data.records:read": {
"List records",
"Get record",
},
"data.records:write": {
"Create records",
"Update record",
"Update multiple records",
"Delete record",
"Delete multiple records",
"Sync CSV data",
},
"data.recordComments:read": {
"List comments",
},
"data.recordComments:write": {
"Create comment",
"Delete comment",
"Update comment",
},
"schema.bases:read": {
"List bases",
"Get base schema",
},
"schema.bases:write": {
"Create base",
"Create table",
"Update table",
"Create field",
"Update field",
"Sync CSV data",
},
"webhook:manage": {
"List webhooks",
"Create a webhook",
"Delete a webhook",
"Enable/disable webhook notifications",
"Refresh a webhook",
},
"block:manage": {
"Create new releases and submissions for custom extensions",
},
"user.email:read": {
"See the user's email address",
},
// Enterprise scopes
"enterprise.groups:read": {
"Get user group",
},
"workspacesAndBases:read": {
"Get base collaborators",
"List block installations",
"Get interface",
"List views",
"Get view metadata",
"Get workspace collaborators",
},
"workspacesAndBases:write": {
"Delete block installation",
"Manage block installation",
"Add base collaborator",
"Delete base collaborator",
"Update collaborator base permission",
"Add interface collaborator",
"Delete interface collaborator",
"Update interface collaborator",
"Delete interface invite",
"Delete base invite",
"Delete view",
"Add workspace collaborator",
"Delete workspace collaborator",
"Update workspace collaborator",
"Delete workspace invite",
"Update workspace restrictions",
},
"workspacesAndBases.shares:manage": {
"List shares",
"Delete share",
"Manage share",
},
"enterprise.scim.usersAndGroups:manage": {
"List groups",
"Create group",
"Delete group",
"Get group",
"Patch group",
"Put group",
"List users",
"Create user",
"Delete user",
"Get user",
"Patch user",
"Put user",
},
"enterprise.auditLogs:read": {
"Audit log events",
"List audit log requests",
"Create audit log request",
"Get audit log request",
},
"enterprise.changeEvents:read": {
"Change events",
},
"enterprise.exports:manage": {
"List eDiscovery exports",
"Create eDiscovery export",
"Get eDiscovery export",
},
"enterprise.account:read": {
"Get enterprise",
},
"enterprise.account:write": {
"Create descendant enterprise",
},
"enterprise.user:read": {
"Get users by id or email",
"Get user by id",
},
"enterprise.user:write": {
"Delete users by email",
"Manage user batched",
"Manage user membership",
"Grant admin access",
"Revoke admin access",
"Delete user by id",
"Manage user",
"Logout user",
"Remove user from enterprise",
},
"enterprise.groups:manage": {
"Move user groups",
},
"workspacesAndBases:manage": {
"Delete base",
"Move workspaces",
"Delete workspace",
"Move base",
},
}
Loading
Loading