Advanced User Permissions

Hi all,

I read this conversation and am looking for a way to restrict access to airtable when using it with REST API. I use airtable in 2 mobile apps (iOS and Android) with an API key. There is a chance that somebody steals the key from the app. Actually with an API key this person would have full access to every part of the database. I would like to know if I can restrict it and switch between the following two possibilities:

a) full access from webbrowser/airtable app, but “read only” when using REST API
b) full access even from REST API (API key)

Greetings, any help would be appreciated.

@Michael_Rogulla I think the only solution right now is to “proxy” your Airtable requests through a backend that has access to your API key.

This is simple to achieve with a cloud function. If you use a third party service like Netlify, they let you invoke 125,000 serverless functions per month (hosted by them for you on AWS Lambda) on their free plan, which doesn’t require a credit card.

Then, once you have that “middleware”, you can consider doing fancier things like caching your Airtable data do you don’t hit the 5 requests per second limit. Or restricting access to specific users depending on their role (admin, etc).

Another advantage of keeping your API key out of your app is that you can immediately change it if it is compromised. Netlify, for example, will let you add it as an environment variable in their dashboard so that you can keep it out of your Git repository.

Other than Netlify, you can try AWS directly, or Azure, IBM Cloud, Google Cloud, Cloudflare Workers, etc. Most offer a free tier in addition to more flexible credits for new account holders. And you don’t have to write it in JavaScript. I think Cloudflare treat Swift as a first-class language citizen.

Hi @Stephen_Cremin, thank you for this helpful tip. I’ll check out if I can use a database proxy with my app. I develop my apps with “Thunkable” (https://thunkable.com/#/), do you have any experience if they are able to use this technique? It would be a great solution for the “5 requests / sec” limit!

BTW: I’ll question the same to thunkable’s support… :slight_smile:

Looking at the Thunkable docs, in addition to the built-in Airtable data access, you can use Web APIs directly.

Use that to talk to your serverless function.

The Airtable API itself is very flexible. The only tricky part is batching requests when you need more than 100 rows in a table, and you may with to handle that in your app.

If you do opt for Netlify functions, I remember they have at least one sample project with published code that shows you how to proxy through to Airtable.

Maybe we’re both being overly paranoid about the risk of the API key leaking. I’d be interested in hearing what others think.

Personally I would want my own “middleware” in place for additional functionality including rate limiting, monitoring, caching, abuse prevention, etc.

1 Like

I looks like a big solution to a smaller problem. My main goal is to prevent users from changing my data. That said I can take API key leaking, if it would be possible to set a base to “read only”. Right now this seems not to be the case, so the proxy is a plus for security.

On the other hand I do not know if thunkable uses internally also the REST API. Because it is a no-code platform I use blocks but do not know what’s behind the curtains. When using the Web APIs I am aware of the 5 requests/second limit, but I don’t know if this limit may apply also to the internal functions (blocks). This is a reason for me to have a closer look at caching proxies, not for security but for availability reasons.

Anyone who discovers you API key has access to not only every part of you base, but also every part of every base in your entire account.

Another option for “read-only” access is to create a new Airtable account and give that account read-only access to only that specific base. Then use that user’s API key to access the Rest API from your app. If that API key is compromised, no data can be changed and no other bases are compromised. Read only users are free.

For full access via the Rest API, I also recommend a proxy to store the key. That will allow you to change the api key if you ever need to.

1 Like

Hi @kuovonne, that sounds like a great idea. I am on the free plan, how can I create a new account? I entered “create new account” in airtable’s help pages, but got no result that helped me further.

You will need a different email address for the new account. After you setup the new email address, add that email address as a base collaborator then follow the instructions in the email that is sent. (You may need to log out of your existing account first.)

1 Like

Airtable is a wonderful platform but it moves SLOW. Like, glacially slow. I wanted to move my company to working with it but I when I saw that there are so many requests that were addressed in a very knowledgable and lengthy ways by the company’s representatives it seems like most of then got stuck in this phase. Of writing essays.

This request is more than 4 years old. 4 years. And how much changed with the user permissions? NOTHING.

I love the new automations and the button field which is really awesome but without the ability to control who can see and edit what it is useless.

Get it together Airtable. User permissions are not that hard. Give your customers clarity. They deserve it. And please, stop with the essays. Learn to write concisely - it is frustrating to read so much just to acknowledge that you will do nothing about it.

To sum up… Find a way to move faster in crucial features or Monday will eat you up.

2 Likes

Welcome to the Airtable community! @Oren_Menashe

I’m not sure which “essays” by company representatives you are referring to. Almost all of the posts in this thread and in the community at large are written by other Airtable users on their own time, not Airtable employees.

Although Airtable does not yet have the advanced user permissions that you and many others would like, I wouldn’t say that Airtable has done nothing in four years. Airtable has released table and field level permissions. Airtable allows shared views and protecting shared views via password or domain. Airtable also just release syncing between bases, which has huge implications for based design and user permissions.

1 Like

Thank you for your reply kuovonne.

My apologies. I wasn’t aware of that. These are great improvements.

The view permissions for a specific field is crucial to our work. Do you have it on your roadmap? And if so, when should it be released?

If you’re looking for an example for a lengthy essay, just look at the “Solved” post at the top of this page.
The “Solved” tag is far from the truth.

Anyway, thanks again and keep up the good work!

@Oren_Menashe

I do not work for Airtable and Airtable tends to keep quiet about its roadmap. I have no more idea of when view permissions will be released than you.

If you need users to be able to edit a record but not view a specific field in the record, I suggest you check out the third party tools Stacker and/or MiniExtensions.

1 Like

Oren, in all forms of technology, pointing to a forum thread that’s nearly four years old is pretty much irrelevant. A lot was said back then that is certainly untruthful today. We know more about workarounds, and we have vastly different features that we can draw upon.

Whenever looking for answers in a technical climate, it’s best to start reading from the bottom because that’s where the most recent and accurate information will be. Blogs, for example are reverse chronological because the pace of change, knowledge, and understanding makes earlier posts obsolete.

The concept of “user permissions” and “view permissions” are very different ideas that need finer points, but regardless, Airtable is probably not the right platform if this feature is crucial to your work because I don’t see it happening soon. Best to move to something that handles these use cases
.

Perhaps, but I think you actually mean field-level user permissions. If so, this statement could could not be further from the truth. I would love to learn how you conclude that field-level security and permissions are akin to “easy”. Please feel free to write a lengthy essay so that I and the Airtable dev team can understand the secret to effortless field-level permissions design.

1 Like

Another alternative involves updating records through forms and automations. You can create a button that opens an update record form targeting the record of choice. Then use automations to take the input from that form and update the record.

It’s more work than the three sentences above may make it sound, but it allows you to give a view-only link to someone and restrict exactly what they can see and edit.

Also, don’t take Bill’s attitude too personally. Although he is right, the sarcasm at the end of the post might be a bit much :slight_smile:

1 Like

Yes, there’s always an edginess when digging for clear requirements and I am known for being a little blunt. :wink: However, I wasn’t attempting sarcasm in this case - I was simply recognizing that Orem had reflected on and complained about the earlier comments that were unhelpful and invited him to provide some thoughts that are detailed and contained substance.

1 Like

Is it possible to do collaborator-field based dynamic permission? i.e. to let only assigned collaborator to see or edit the line.

Nope, you can’t do that @Ohad_Shavit

1 Like

Thanks Jarvis. Is there any alternative?

In Airtable, you can probably use a workaround that uses Airtable sync. It might take a few trial-and-errors to get it working the way you like, but it’s the cheaper route: Re-Linking data or two way sync?

The more expensive but hassle-free route would be to use https://stacker.app/ (so far this is the only 3rd party utility which allows you to do what you’re looking for in the most plug-and-play way)

It’s been over a year now since you posted this and yet it seems like it still isn’t possible to do very simple things with permissions. For example, why isn’t it possible to restrict collaborators to a single view? We use Airtable as an editorial calendar and we want our writers to only be able to see the posts we have assigned to them - we don’t want them to see the whole calendar. As far as I can tell this isn’t possible with Airtable as it is now. We are forced to share everything with everyone.

4 Likes